"""Global application settings stored as key-value pairs in the database.""" from app.extensions import db class AppSettings(db.Model): """Key-value store for global application settings. Stores toggles and configuration that admins control through the admin panel, such as whether tryouts are open, season state, etc. """ __tablename__ = 'app_settings' key = db.Column(db.String(100), primary_key=True) value = db.Column(db.Text, nullable=True) # ------------------------------------------------------------------ # Well-known keys (documented here for discoverability) # ------------------------------------------------------------------ # tryouts_open – "true" / "false" (default: "true") # season_active – "true" / "false" (default: "false") # season_name – e.g. "Fall 2026" # season_start – ISO date string # season_end – ISO date string @staticmethod def get(key, default=None): """Return the value for *key*, or *default* if not set.""" row = db.session.get(AppSettings, key) return row.value if row is not None else default @staticmethod def set(key, value): """Upsert a setting.""" row = db.session.get(AppSettings, key) if row is None: row = AppSettings(key=key, value=str(value) if value is not None else None) db.session.add(row) else: row.value = str(value) if value is not None else None db.session.commit() @staticmethod def get_bool(key, default=False): """Return a boolean setting.""" val = AppSettings.get(key) if val is None: return default return val.lower() in ('true', '1', 'yes', 'on') @staticmethod def set_bool(key, value): """Store a boolean setting as 'true' / 'false'.""" AppSettings.set(key, 'true' if value else 'false')