58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
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,
|
|
}
|