import os basedir = os.path.abspath(os.path.dirname(__file__)) def _get_bool(name: str, default: bool) -> bool: val = os.environ.get(name) if val is None: return default return str(val).strip().lower() in {"1", "true", "t", "yes", "y", "on"} def _get_str(name: str, default: str) -> str: return os.environ.get(name, default) class Config: """ Konfiguracja aplikacji pobierana z ENV (z sensownymi domyślnymi wartościami). Zmiennych szukamy pod nazwami: - DATABASE_URL - SECRET_KEY - ALLOW_REGISTRATION - MAIN_ADMIN_USERNAME - MAIN_ADMIN_PASSWORD - BLOCK_BOTS - CACHE_CONTROL_HEADER - PRAGMA_HEADER - ROBOTS_TAG """ #SQLALCHEMY_DATABASE_URI = _get_str("DATABASE_URL", "sqlite:///baza.db") # Flask SECRET_KEY = _get_str("SECRET_KEY", "tajny_klucz") # Rejestracja i konto admina ALLOW_REGISTRATION = _get_bool("ALLOW_REGISTRATION", False) MAIN_ADMIN_USERNAME = _get_str("MAIN_ADMIN_USERNAME", "admin") MAIN_ADMIN_PASSWORD = _get_str("MAIN_ADMIN_PASSWORD", "admin") # Indeksowanie / cache / robots BLOCK_BOTS = _get_bool("BLOCK_BOTS", True) CACHE_CONTROL_HEADER = _get_str("CACHE_CONTROL_HEADER", "max-age=600") CACHE_CONTROL_HEADER_STATIC = _get_str("CACHE_CONTROL_HEADER_STATIC", "max-age=3600") USE_ETAGS = _get_bool("USE_ETAGS", True) PRAGMA_HEADER = _get_str("PRAGMA_HEADER", "") ROBOTS_TAG = _get_str("ROBOTS_TAG", "noindex, nofollow, nosnippet, noarchive") # (opcjonalnie) wyłącz warningi track_modifications SQLALCHEMY_TRACK_MODIFICATIONS = False HEALTHCHECK_TOKEN = _get_str("HEALTHCHECK_TOKEN", "healthcheck") # Baza danych DB_ENGINE = os.environ.get("DB_ENGINE", "sqlite").lower() if DB_ENGINE == "sqlite": SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.join(basedir, 'db', 'database.db')}" elif DB_ENGINE == "pgsql": SQLALCHEMY_DATABASE_URI = ( f"postgresql://{os.environ['DB_USER']}:{os.environ['DB_PASSWORD']}@" f"{os.environ['DB_HOST']}:{os.environ.get('DB_PORT', 5432)}/{os.environ['DB_NAME']}" ) elif DB_ENGINE == "mysql": SQLALCHEMY_DATABASE_URI = ( f"mysql+pymysql://{os.environ['DB_USER']}:{os.environ['DB_PASSWORD']}@" f"{os.environ['DB_HOST']}:{os.environ.get('DB_PORT', 3306)}/{os.environ['DB_NAME']}" ) else: raise ValueError("Nieobsługiwany typ bazy danych.")