Add leader contact section to parent confirmation email templates
Both .html.j2 and .txt.j2 now include a CONTACT section after the emergency block. It conditionally shows Andrea Sigrist (indoor) and/or Barbara Gross (outdoor) plus Markus Graf (admin) with phone and email, rendered as clickable links in HTML. Adds the required template variables (has_outdoor, leader_indoor_*, leader_outdoor_*, admin_*) to build_parent_context in context.py, and the matching label strings to de.yaml (LLM-translated for other langs). https://claude.ai/code/session_01Qikq92MrNk95ZXtatPyJJh
This commit is contained in:
@@ -14,6 +14,18 @@ QR_STREET = "Huebwisstrase 5"
|
|||||||
QR_PCODE = "8117"
|
QR_PCODE = "8117"
|
||||||
QR_CITY = "Fällanden"
|
QR_CITY = "Fällanden"
|
||||||
|
|
||||||
|
LEADER_INDOOR_NAME = "Andrea Sigrist"
|
||||||
|
LEADER_INDOOR_PHONE = "079 674 99 92"
|
||||||
|
LEADER_INDOOR_EMAIL = "andrea.sigrist@gmx.net"
|
||||||
|
|
||||||
|
LEADER_OUTDOOR_NAME = "Barbara Gross"
|
||||||
|
LEADER_OUTDOOR_PHONE = "078 761 19 64"
|
||||||
|
LEADER_OUTDOOR_EMAIL = "baba.laeubli@gmail.com"
|
||||||
|
|
||||||
|
ADMIN_NAME = "Markus Graf"
|
||||||
|
ADMIN_PHONE = "079 261 16 37"
|
||||||
|
ADMIN_EMAIL = "spielgruppen@familien-verein.ch"
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Formatting helpers (pure functions, no side-effects)
|
# Formatting helpers (pure functions, no side-effects)
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -187,7 +199,17 @@ def build_parent_context(
|
|||||||
"days": format_days_i18n(registration, strings),
|
"days": format_days_i18n(registration, strings),
|
||||||
"monthly_fee": calculate_monthly_fee(registration),
|
"monthly_fee": calculate_monthly_fee(registration),
|
||||||
"has_indoor": "indoor" in registration.booking.playgroup_types,
|
"has_indoor": "indoor" in registration.booking.playgroup_types,
|
||||||
|
"has_outdoor": "outdoor" in registration.booking.playgroup_types,
|
||||||
"has_qr": has_qr,
|
"has_qr": has_qr,
|
||||||
|
"leader_indoor_name": LEADER_INDOOR_NAME,
|
||||||
|
"leader_indoor_phone": LEADER_INDOOR_PHONE,
|
||||||
|
"leader_indoor_email": LEADER_INDOOR_EMAIL,
|
||||||
|
"leader_outdoor_name": LEADER_OUTDOOR_NAME,
|
||||||
|
"leader_outdoor_phone": LEADER_OUTDOOR_PHONE,
|
||||||
|
"leader_outdoor_email": LEADER_OUTDOOR_EMAIL,
|
||||||
|
"admin_name": ADMIN_NAME,
|
||||||
|
"admin_phone": ADMIN_PHONE,
|
||||||
|
"admin_email": ADMIN_EMAIL,
|
||||||
"parent_name": pg.full_name or "",
|
"parent_name": pg.full_name or "",
|
||||||
"parent_address": pg.street_address or "",
|
"parent_address": pg.street_address or "",
|
||||||
"parent_postal_code": pg.postal_code or "",
|
"parent_postal_code": pg.postal_code or "",
|
||||||
|
|||||||
@@ -39,8 +39,17 @@ iban_label: "IBAN"
|
|||||||
payee_label: "Empfänger"
|
payee_label: "Empfänger"
|
||||||
amount_label: "Betrag"
|
amount_label: "Betrag"
|
||||||
|
|
||||||
|
contact_section: "Deine Ansprechpersonen"
|
||||||
|
contact_intro: "Bei Fragen kannst du dich direkt an die zuständige Spielgruppenleiterin wenden:"
|
||||||
|
contact_indoor_label: "Innenspielgruppe"
|
||||||
|
contact_outdoor_label: "Waldspielgruppe"
|
||||||
|
contact_admin_label: "Administration"
|
||||||
|
contact_name: "Name"
|
||||||
|
contact_phone: "Telefon"
|
||||||
|
contact_email: "E-Mail"
|
||||||
|
|
||||||
closing: |
|
closing: |
|
||||||
Bei Fragen stehen wir dir gerne zur Verfügung. Wir freuen uns auf dein Kind!
|
Wir freuen uns auf dein Kind!
|
||||||
|
|
||||||
Herzliche Grüsse
|
Herzliche Grüsse
|
||||||
Spielgruppe Pumuckl
|
Spielgruppe Pumuckl
|
||||||
|
|||||||
@@ -74,6 +74,27 @@
|
|||||||
<tr><td style="padding:4px 0;color:#666;">{{ strings.emergency_phone }}</td><td>{{ emergency_phone }}</td></tr>
|
<tr><td style="padding:4px 0;color:#666;">{{ strings.emergency_phone }}</td><td>{{ emergency_phone }}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<h2 style="color:#2e7d32;border-bottom:2px solid #2e7d32;padding-bottom:4px;font-size:16px;">{{ strings.contact_section }}</h2>
|
||||||
|
<p>{{ strings.contact_intro }}</p>
|
||||||
|
<table style="width:100%;border-collapse:collapse;">
|
||||||
|
{% if has_indoor %}
|
||||||
|
<tr><td colspan="2" style="padding:8px 0 2px;font-weight:bold;">{{ strings.contact_indoor_label }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;width:55%;">{{ strings.contact_name }}</td><td>{{ leader_indoor_name }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;">{{ strings.contact_phone }}</td><td><a href="tel:{{ leader_indoor_phone }}" style="color:#2e7d32;">{{ leader_indoor_phone }}</a></td></tr>
|
||||||
|
<tr><td style="padding:2px 0 8px 16px;color:#666;">{{ strings.contact_email }}</td><td><a href="mailto:{{ leader_indoor_email }}" style="color:#2e7d32;">{{ leader_indoor_email }}</a></td></tr>
|
||||||
|
{% endif %}
|
||||||
|
{% if has_outdoor %}
|
||||||
|
<tr><td colspan="2" style="padding:8px 0 2px;font-weight:bold;">{{ strings.contact_outdoor_label }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;width:55%;">{{ strings.contact_name }}</td><td>{{ leader_outdoor_name }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;">{{ strings.contact_phone }}</td><td><a href="tel:{{ leader_outdoor_phone }}" style="color:#2e7d32;">{{ leader_outdoor_phone }}</a></td></tr>
|
||||||
|
<tr><td style="padding:2px 0 8px 16px;color:#666;">{{ strings.contact_email }}</td><td><a href="mailto:{{ leader_outdoor_email }}" style="color:#2e7d32;">{{ leader_outdoor_email }}</a></td></tr>
|
||||||
|
{% endif %}
|
||||||
|
<tr><td colspan="2" style="padding:8px 0 2px;font-weight:bold;">{{ strings.contact_admin_label }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;width:55%;">{{ strings.contact_name }}</td><td>{{ admin_name }}</td></tr>
|
||||||
|
<tr><td style="padding:2px 0 2px 16px;color:#666;">{{ strings.contact_phone }}</td><td><a href="tel:{{ admin_phone }}" style="color:#2e7d32;">{{ admin_phone }}</a></td></tr>
|
||||||
|
<tr><td style="padding:2px 0 8px 16px;color:#666;">{{ strings.contact_email }}</td><td><a href="mailto:{{ admin_email }}" style="color:#2e7d32;">{{ admin_email }}</a></td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<p style="margin-top:24px;white-space:pre-line;">{{ strings.closing }}</p>
|
<p style="margin-top:24px;white-space:pre-line;">{{ strings.closing }}</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -46,6 +46,27 @@
|
|||||||
{{ strings.emergency_name }}: {{ emergency_name }}
|
{{ strings.emergency_name }}: {{ emergency_name }}
|
||||||
{{ strings.emergency_phone }}: {{ emergency_phone }}
|
{{ strings.emergency_phone }}: {{ emergency_phone }}
|
||||||
|
|
||||||
|
===============================================
|
||||||
|
{{ strings.contact_section | upper }}
|
||||||
|
===============================================
|
||||||
|
{{ strings.contact_intro }}
|
||||||
|
{% if has_indoor %}
|
||||||
|
{{ strings.contact_indoor_label }}
|
||||||
|
{{ strings.contact_name }}: {{ leader_indoor_name }}
|
||||||
|
{{ strings.contact_phone }}: {{ leader_indoor_phone }}
|
||||||
|
{{ strings.contact_email }}: {{ leader_indoor_email }}
|
||||||
|
{% endif %}
|
||||||
|
{% if has_outdoor %}
|
||||||
|
{{ strings.contact_outdoor_label }}
|
||||||
|
{{ strings.contact_name }}: {{ leader_outdoor_name }}
|
||||||
|
{{ strings.contact_phone }}: {{ leader_outdoor_phone }}
|
||||||
|
{{ strings.contact_email }}: {{ leader_outdoor_email }}
|
||||||
|
{% endif %}
|
||||||
|
{{ strings.contact_admin_label }}
|
||||||
|
{{ strings.contact_name }}: {{ admin_name }}
|
||||||
|
{{ strings.contact_phone }}: {{ admin_phone }}
|
||||||
|
{{ strings.contact_email }}: {{ admin_email }}
|
||||||
|
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
{{ strings.closing }}
|
{{ strings.closing }}
|
||||||
|
|||||||
Reference in New Issue
Block a user