from __future__ import annotations import os from datetime import timedelta from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent class Config: SECRET_KEY = os.getenv("SECRET_KEY", "dev-change-me") SQLALCHEMY_DATABASE_URI = os.getenv( "DATABASE_URL", f"sqlite:///{BASE_DIR / 'instance' / 'face_attendance.sqlite3'}", ) SQLALCHEMY_TRACK_MODIFICATIONS = False MAX_CONTENT_LENGTH = int(os.getenv("MAX_CONTENT_LENGTH", str(8 * 1024 * 1024))) FACE_MATCH_TOLERANCE = float(os.getenv("FACE_MATCH_TOLERANCE", "0.55")) PERMANENT_SESSION_LIFETIME = timedelta(hours=12) SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_SAMESITE = "Lax" REMEMBER_COOKIE_HTTPONLY = True REMEMBER_COOKIE_DURATION = timedelta(days=14) WTF_CSRF_TIME_LIMIT = None class DevelopmentConfig(Config): DEBUG = True SESSION_COOKIE_SECURE = False REMEMBER_COOKIE_SECURE = False class TestingConfig(Config): TESTING = True WTF_CSRF_ENABLED = False SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:" SERVER_NAME = "localhost.test" SESSION_COOKIE_SECURE = False REMEMBER_COOKIE_SECURE = False class ProductionConfig(Config): DEBUG = False TESTING = False SESSION_COOKIE_SECURE = True REMEMBER_COOKIE_SECURE = True config_by_name = { "development": DevelopmentConfig, "testing": TestingConfig, "production": ProductionConfig, }