CI - Security, Lint & Tests / validate (push) Failing after 1m3s
ajout de compteur d'heure disponible ajout du calendrier de dispo dans les profils publics
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
"""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")
|
||
# document_uploads_enabled – "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') |