Rend les plages horaires configurables par utilisateur plutôt que globalement
Chaque compte a désormais son propre data/users/<user>/plages.json, réglable depuis une nouvelle carte "Plages horaires" sur /settings (avec validation HH:MM et ordre matin < aprem). Le calcul, les stats de conformité et les avertissements de saisie lisent la config de l'utilisateur courant au lieu du plages global. La valeur globale de data/config.json reste lue comme valeur de repli tant qu'un utilisateur n'a rien personnalisé.
This commit is contained in:
@ -210,6 +210,30 @@ def save_presence(user_id: str, present: bool, since: str | None):
|
||||
)
|
||||
|
||||
|
||||
# ── Plages horaires (par utilisateur) ─────────────────────────────────────────
|
||||
|
||||
def _plages_file(user_id: str) -> Path:
|
||||
return _user_root(user_id) / "plages.json"
|
||||
|
||||
|
||||
def load_plages(user_id: str) -> dict:
|
||||
"""Return this user's plage config, falling back to the (legacy) global config
|
||||
default, then to DEFAULT_PLAGES, for any key not yet customized."""
|
||||
base = {**DEFAULT_PLAGES, **load_config().get("plages", {})}
|
||||
f = _plages_file(user_id)
|
||||
if f.exists():
|
||||
try:
|
||||
return {**base, **json.loads(f.read_text())}
|
||||
except json.JSONDecodeError:
|
||||
pass
|
||||
return base
|
||||
|
||||
|
||||
def save_plages(user_id: str, plages: dict):
|
||||
_ensure_user_dirs(user_id)
|
||||
_plages_file(user_id).write_text(json.dumps(plages, indent=2, ensure_ascii=False))
|
||||
|
||||
|
||||
def toggle_conge(date: str, type_conge: str, user_id: str = ""):
|
||||
assert type_conge in ("jour", "matin", "aprem")
|
||||
conges = load_conges(user_id)
|
||||
|
||||
Reference in New Issue
Block a user