"""Pro-User-Benachrichtigungseinstellungen (agent-11 PR3). Bekannte Keys + Defaults. Ein leeres `notification_prefs`-dict bedeutet „alle an" (opt-out-Modell). Neue Keys defaulten daher automatisch auf aktiv. """ from __future__ import annotations # key -> (Label, Default-aktiv) NOTIFICATION_TYPES: dict[str, tuple[str, bool]] = { "substitute_assigned": ("Als Vertretung eingetragen", True), "pending_approvals": ("Offene Anträge zur Genehmigung (Zusammenfassung)", True), "carryover_expiry": ("Resturlaub verfällt bald", True), "certificate_overdue": ("Fehlende AU-Bescheinigung (HR)", True), } def pref_enabled(user, key: str) -> bool: """Ob der User Benachrichtigungen vom Typ `key` erhalten möchte.""" prefs = getattr(user, "notification_prefs", None) or {} default = NOTIFICATION_TYPES.get(key, ("", True))[1] return bool(prefs.get(key, default)) def normalize_prefs(prefs: dict | None) -> dict: """Nur bekannte Keys übernehmen, auf bool casten.""" prefs = prefs or {} return {k: bool(prefs[k]) for k in NOTIFICATION_TYPES if k in prefs}