"""Rendu des emails. Les textes vivent dans `locales/fr.json` (`email.*`).""" from app.i18n import t # Variables autorisées dans un modèle d'email de planning saisi par la # coordination. _PLANNING_PLACEHOLDERS = ( "prenom", "nom", "nb_creneaux", "nb_heures", "creneaux", "lien_connexion", ) def render_magic_link(*, link: str, minutes: int) -> tuple[str, str]: return ( t("email.magic_link.subject"), t("email.magic_link.body", link=link, minutes=minutes), ) def _fill(template: str, values: dict[str, object]) -> str: out = template for key in _PLANNING_PLACEHOLDERS: out = out.replace("{" + key + "}", str(values.get(key, ""))) return out def render_planning( *, subject_template: str, body_template: str, first_name: str, last_name: str, shift_count: int, hours: float, shifts_text: str, login_link: str, ) -> tuple[str, str]: values: dict[str, object] = { "prenom": first_name, "nom": last_name, "nb_creneaux": shift_count, "nb_heures": hours, "creneaux": shifts_text, "lien_connexion": login_link, } return _fill(subject_template, values), _fill(body_template, values)