55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
|
|
|
|
class Config:
|
|
"""Shared settings with secure production-oriented defaults."""
|
|
|
|
SECRET_KEY = os.environ.get("SECRET_KEY")
|
|
SQLALCHEMY_DATABASE_URI = os.environ.get(
|
|
"DATABASE_URL",
|
|
f"sqlite:///{BASE_DIR / 'instance' / 'steady.db'}",
|
|
)
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
SESSION_COOKIE_SAMESITE = "Lax"
|
|
SESSION_COOKIE_SECURE = True
|
|
REMEMBER_COOKIE_HTTPONLY = True
|
|
REMEMBER_COOKIE_SAMESITE = "Lax"
|
|
REMEMBER_COOKIE_SECURE = True
|
|
WTF_CSRF_TIME_LIMIT = 3600
|
|
MAX_CONTENT_LENGTH = 2 * 1024 * 1024
|
|
|
|
FEATURE_ADMIN = False
|
|
FEATURE_API_V1 = False
|
|
FEATURE_BROWSER_REMINDERS = False
|
|
|
|
|
|
class DevelopmentConfig(Config):
|
|
DEBUG = True
|
|
SECRET_KEY = os.environ.get("SECRET_KEY", "development-only-change-me")
|
|
SESSION_COOKIE_SECURE = False
|
|
REMEMBER_COOKIE_SECURE = False
|
|
|
|
|
|
class TestingConfig(Config):
|
|
TESTING = True
|
|
SECRET_KEY = "testing-only"
|
|
SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
|
|
WTF_CSRF_ENABLED = False
|
|
SESSION_COOKIE_SECURE = False
|
|
REMEMBER_COOKIE_SECURE = False
|
|
|
|
|
|
class ProductionConfig(Config):
|
|
pass
|
|
|
|
|
|
CONFIGS = {
|
|
"development": DevelopmentConfig,
|
|
"testing": TestingConfig,
|
|
"production": ProductionConfig,
|
|
}
|