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_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)
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -187,7 +199,17 @@ def build_parent_context(
|
||||
"days": format_days_i18n(registration, strings),
|
||||
"monthly_fee": calculate_monthly_fee(registration),
|
||||
"has_indoor": "indoor" in registration.booking.playgroup_types,
|
||||
"has_outdoor": "outdoor" in registration.booking.playgroup_types,
|
||||
"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_address": pg.street_address or "",
|
||||
"parent_postal_code": pg.postal_code or "",
|
||||
|
||||
@@ -39,8 +39,17 @@ iban_label: "IBAN"
|
||||
payee_label: "Empfänger"
|
||||
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: |
|
||||
Bei Fragen stehen wir dir gerne zur Verfügung. Wir freuen uns auf dein Kind!
|
||||
Wir freuen uns auf dein Kind!
|
||||
|
||||
Herzliche Grüsse
|
||||
Spielgruppe Pumuckl
|
||||
|
||||
@@ -74,6 +74,27 @@
|
||||
<tr><td style="padding:4px 0;color:#666;">{{ strings.emergency_phone }}</td><td>{{ emergency_phone }}</td></tr>
|
||||
</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>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -46,6 +46,27 @@
|
||||
{{ strings.emergency_name }}: {{ emergency_name }}
|
||||
{{ 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 }}
|
||||
|
||||
Reference in New Issue
Block a user