import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent class Config: ENV_NAME = os.getenv('FLASK_ENV', 'development') SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret-key') SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', f"sqlite:///{BASE_DIR / 'instance' / 'expense_monitor.db'}") SQLALCHEMY_TRACK_MODIFICATIONS = False APP_HOST = os.getenv('APP_HOST', '127.0.0.1') APP_PORT = int(os.getenv('APP_PORT', '5000')) DEFAULT_MAX_UPLOAD_MB = int(os.getenv('MAX_CONTENT_LENGTH_MB', '10')) MAX_CONTENT_LENGTH = DEFAULT_MAX_UPLOAD_MB * 1024 * 1024 REGISTRATION_ENABLED = os.getenv('REGISTRATION_ENABLED', 'false').lower() == 'true' MAIL_SERVER = os.getenv('MAIL_SERVER', '') MAIL_PORT = int(os.getenv('MAIL_PORT', '465')) MAIL_USE_TLS = os.getenv('MAIL_USE_TLS', 'false').lower() == 'true' MAIL_USE_SSL = os.getenv('MAIL_USE_SSL', 'true').lower() == 'true' MAIL_USERNAME = os.getenv('MAIL_USERNAME', '') MAIL_PASSWORD = os.getenv('MAIL_PASSWORD', '') MAIL_DEFAULT_SENDER = os.getenv('MAIL_DEFAULT_SENDER', 'no-reply@example.com') REMEMBER_COOKIE_HTTPONLY = True REMEMBER_COOKIE_SAMESITE = 'Lax' SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_SAMESITE = 'Lax' SESSION_COOKIE_SECURE = os.getenv('FLASK_ENV', 'development') != 'development' PREFERRED_URL_SCHEME = 'https' if SESSION_COOKIE_SECURE else 'http' LANGUAGES = ['pl', 'en'] DEFAULT_LANGUAGE = 'pl' UPLOAD_EXTENSIONS = {'png', 'jpg', 'jpeg', 'heic', 'pdf'} class TestConfig(Config): TESTING = True WTF_CSRF_ENABLED = False SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:' SESSION_COOKIE_SECURE = False LOGIN_DISABLED = False