Baseline für Vision 2026: Veranstaltungsmodul + ausstehende Änderungen

Alle bestehenden, nicht commiteten Änderungen als Ausgangsbasis für den
vision-2026 Branch übernommen (Veranstaltungsmodul, Serienbrief, etc.).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-11 08:51:48 +00:00
parent 28621d2774
commit 709903e627
15 changed files with 1210 additions and 28 deletions

View File

@@ -0,0 +1,36 @@
{% extends 'base.html' %}
{% block title %}Veranstaltung löschen Stiftungsverwaltung{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row justify-content-center">
<div class="col-lg-6">
<div class="card shadow-sm">
<div class="card-header bg-danger text-white">
<i class="fas fa-exclamation-triangle me-2"></i>Veranstaltung löschen
</div>
<div class="card-body">
<p>Möchten Sie die folgende Veranstaltung wirklich löschen?</p>
<div class="alert alert-warning">
<strong>{{ veranstaltung.titel }}</strong><br>
{{ veranstaltung.datum|date:"d.m.Y" }} {{ veranstaltung.ort }}<br>
<small class="text-muted">{{ veranstaltung.get_teilnehmer_count }} Teilnehmer werden ebenfalls entfernt.</small>
</div>
<form method="post">
{% csrf_token %}
<div class="d-flex justify-content-between">
<a href="{% url 'stiftung:veranstaltung_detail' veranstaltung.pk %}" class="btn btn-secondary">
<i class="fas fa-arrow-left me-2"></i>Abbrechen
</a>
<button type="submit" class="btn btn-danger">
<i class="fas fa-trash me-2"></i>Endgültig löschen
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -20,7 +20,7 @@
</p>
</div>
<div class="d-flex gap-2">
<a href="{% url 'admin:stiftung_veranstaltung_change' veranstaltung.pk %}" class="btn btn-outline-secondary">
<a href="{% url 'stiftung:veranstaltung_update' veranstaltung.pk %}" class="btn btn-outline-secondary">
<i class="fas fa-edit me-1"></i>Bearbeiten
</a>
<a href="{% url 'stiftung:veranstaltung_serienbrief_pdf' veranstaltung.pk %}" class="btn btn-success">
@@ -125,11 +125,15 @@
class="btn btn-success w-100">
<i class="fas fa-file-pdf me-2"></i>Serienbrief-PDF (alle Teilnehmer)
</a>
<a href="{% url 'admin:stiftung_veranstaltungsteilnehmer_add' %}?veranstaltung={{ veranstaltung.pk }}"
<a href="{% url 'stiftung:veranstaltung_serienbrief_vorschau' veranstaltung.pk %}"
class="btn btn-outline-primary w-100" target="_blank">
<i class="fas fa-eye me-2"></i>Serienbrief-Vorschau
</a>
<a href="{% url 'stiftung:teilnehmer_create' veranstaltung.pk %}"
class="btn btn-outline-primary w-100">
<i class="fas fa-user-plus me-2"></i>Teilnehmer hinzufügen
</a>
<a href="{% url 'admin:stiftung_veranstaltung_change' veranstaltung.pk %}"
<a href="{% url 'stiftung:veranstaltung_update' veranstaltung.pk %}"
class="btn btn-outline-secondary w-100">
<i class="fas fa-edit me-2"></i>Veranstaltung bearbeiten
</a>
@@ -142,6 +146,9 @@
<div class="card shadow-sm mt-4">
<div class="card-header bg-dark text-white d-flex justify-content-between align-items-center">
<span><i class="fas fa-users me-2"></i>Teilnehmerliste ({{ teilnehmer.count }})</span>
<a href="{% url 'stiftung:teilnehmer_create' veranstaltung.pk %}" class="btn btn-sm btn-outline-light">
<i class="fas fa-user-plus me-1"></i>Hinzufügen
</a>
</div>
<div class="card-body p-0">
{% if teilnehmer %}
@@ -153,6 +160,7 @@
<th>E-Mail</th>
<th>RSVP</th>
<th>Bemerkungen</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
@@ -179,6 +187,14 @@
{% endif %}
</td>
<td>{{ t.bemerkungen|default:"" }}</td>
<td>
<a href="{% url 'stiftung:teilnehmer_update' veranstaltung.pk t.pk %}" class="btn btn-sm btn-outline-secondary me-1" title="Bearbeiten">
<i class="fas fa-edit"></i>
</a>
<a href="{% url 'stiftung:teilnehmer_delete' veranstaltung.pk t.pk %}" class="btn btn-sm btn-outline-danger" title="Entfernen">
<i class="fas fa-trash"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
@@ -187,7 +203,7 @@
<div class="p-4 text-center text-muted">
<i class="fas fa-users fa-2x mb-2"></i>
<p>Noch keine Teilnehmer eingetragen.</p>
<a href="{% url 'admin:stiftung_veranstaltungsteilnehmer_add' %}?veranstaltung={{ veranstaltung.pk }}"
<a href="{% url 'stiftung:teilnehmer_create' veranstaltung.pk %}"
class="btn btn-primary">
<i class="fas fa-user-plus me-1"></i>Ersten Teilnehmer hinzufügen
</a>

View File

@@ -0,0 +1,200 @@
{% extends 'base.html' %}
{% load static %}
{% block title %}{{ title }} - Stiftungsverwaltung{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3">
<i class="fas fa-calendar-alt text-primary me-2"></i>
{{ title }}
</h1>
<a href="{% url 'stiftung:veranstaltung_list' %}" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-2"></i>Zurück zur Liste
</a>
</div>
</div>
</div>
<form method="post" novalidate>
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger">
<ul class="mb-0">
{% for error in form.non_field_errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row g-4">
<div class="col-lg-8">
<!-- Grunddaten -->
<div class="card shadow-sm mb-4">
<div class="card-header bg-dark text-white">
<i class="fas fa-info-circle me-2"></i>Grunddaten
</div>
<div class="card-body">
<div class="row">
<div class="col-12 mb-3">
<label for="{{ form.titel.id_for_label }}" class="form-label">{{ form.titel.label }} *</label>
{{ form.titel }}
{% if form.titel.errors %}<div class="invalid-feedback d-block">{{ form.titel.errors.0 }}</div>{% endif %}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.datum.id_for_label }}" class="form-label">{{ form.datum.label }} *</label>
{{ form.datum }}
{% if form.datum.errors %}<div class="invalid-feedback d-block">{{ form.datum.errors.0 }}</div>{% endif %}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.uhrzeit.id_for_label }}" class="form-label">{{ form.uhrzeit.label }}</label>
{{ form.uhrzeit }}
{% if form.uhrzeit.errors %}<div class="invalid-feedback d-block">{{ form.uhrzeit.errors.0 }}</div>{% endif %}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.status.id_for_label }}" class="form-label">{{ form.status.label }}</label>
{{ form.status }}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.ort.id_for_label }}" class="form-label">{{ form.ort.label }} *</label>
{{ form.ort }}
{% if form.ort.errors %}<div class="invalid-feedback d-block">{{ form.ort.errors.0 }}</div>{% endif %}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.budget_pro_person.id_for_label }}" class="form-label">{{ form.budget_pro_person.label }}</label>
{{ form.budget_pro_person }}
</div>
<div class="col-12 mb-3">
<label for="{{ form.adresse.id_for_label }}" class="form-label">{{ form.adresse.label }}</label>
{{ form.adresse }}
</div>
<div class="col-12 mb-3">
<label for="{{ form.beschreibung.id_for_label }}" class="form-label">{{ form.beschreibung.label }}</label>
{{ form.beschreibung }}
</div>
</div>
</div>
</div>
<!-- Serienbrief-Vorlage -->
<div class="card shadow-sm mb-4">
<div class="card-header bg-dark text-white">
<i class="fas fa-envelope-open-text me-2"></i>Serienbrief Vorlage
</div>
<div class="card-body">
<div class="col-12 mb-3">
<label for="{{ form.betreff.id_for_label }}" class="form-label">{{ form.betreff.label }}</label>
{{ form.betreff }}
<div class="form-text">{{ form.betreff.help_text }}</div>
</div>
<div class="col-12 mb-3">
<label for="{{ form.briefvorlage.id_for_label }}" class="form-label">{{ form.briefvorlage.label }}</label>
{{ form.briefvorlage }}
{% if form.briefvorlage.errors %}<div class="invalid-feedback d-block">{{ form.briefvorlage.errors.0 }}</div>{% endif %}
<div class="form-text">{{ form.briefvorlage.help_text }}</div>
</div>
</div>
</div>
<!-- Unterschriften -->
<div class="card shadow-sm mb-4">
<div class="card-header bg-dark text-white">
<i class="fas fa-signature me-2"></i>Serienbrief Unterschriften
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6 mb-3">
<label for="{{ form.unterschrift_1_name.id_for_label }}" class="form-label">{{ form.unterschrift_1_name.label }}</label>
{{ form.unterschrift_1_name }}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.unterschrift_1_titel.id_for_label }}" class="form-label">{{ form.unterschrift_1_titel.label }}</label>
{{ form.unterschrift_1_titel }}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.unterschrift_2_name.id_for_label }}" class="form-label">{{ form.unterschrift_2_name.label }}</label>
{{ form.unterschrift_2_name }}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.unterschrift_2_titel.id_for_label }}" class="form-label">{{ form.unterschrift_2_titel.label }}</label>
{{ form.unterschrift_2_titel }}
</div>
</div>
</div>
</div>
</div>
<!-- Sidebar -->
<div class="col-lg-4">
<div class="card shadow-sm mb-4">
<div class="card-header bg-dark text-white">
<i class="fas fa-question-circle me-2"></i>Platzhalter-Hilfe
</div>
<div class="card-body">
<p class="small text-muted mb-2">Verfügbare Platzhalter für die Briefvorlage:</p>
<table class="table table-sm small">
<tbody>
<tr><td class="font-monospace text-danger">{{ anrede }}</td><td>Herr / Frau</td></tr>
<tr><td class="font-monospace text-danger">{{ vorname }}</td><td>Vorname</td></tr>
<tr><td class="font-monospace text-danger">{{ nachname }}</td><td>Nachname</td></tr>
<tr><td class="font-monospace text-danger">{{ strasse }}</td><td>Straße + Nr.</td></tr>
<tr><td class="font-monospace text-danger">{{ plz }}</td><td>PLZ</td></tr>
<tr><td class="font-monospace text-danger">{{ ort }}</td><td>Wohnort</td></tr>
<tr><td class="font-monospace text-danger">{{ datum }}</td><td>Veranstaltungsdatum</td></tr>
<tr><td class="font-monospace text-danger">{{ uhrzeit }}</td><td>Uhrzeit</td></tr>
<tr><td class="font-monospace text-danger">{{ veranstaltungsort }}</td><td>Gasthaus / Ort</td></tr>
<tr><td class="font-monospace text-danger">{{ gasthaus_adresse }}</td><td>Adresse Gasthaus</td></tr>
</tbody>
</table>
<p class="small text-muted mb-0">Platzhalter werden beim PDF-Export automatisch befüllt.</p>
</div>
</div>
{% if veranstaltung %}
<div class="card shadow-sm">
<div class="card-header bg-dark text-white">
<i class="fas fa-tools me-2"></i>Aktionen
</div>
<div class="card-body d-flex flex-column gap-2">
<a href="{% url 'stiftung:veranstaltung_serienbrief_vorschau' veranstaltung.pk %}"
class="btn btn-outline-primary w-100" target="_blank">
<i class="fas fa-eye me-2"></i>Serienbrief-Vorschau
</a>
<a href="{% url 'stiftung:veranstaltung_serienbrief_pdf' veranstaltung.pk %}"
class="btn btn-outline-success w-100">
<i class="fas fa-file-pdf me-2"></i>Serienbrief-PDF
</a>
<hr>
<a href="{% url 'stiftung:veranstaltung_delete' veranstaltung.pk %}"
class="btn btn-outline-danger w-100">
<i class="fas fa-trash me-2"></i>Veranstaltung löschen
</a>
</div>
</div>
{% endif %}
</div>
</div>
<!-- Submit -->
<div class="row mt-3">
<div class="col-lg-8">
<hr>
<div class="d-flex justify-content-between">
<a href="{% url 'stiftung:veranstaltung_list' %}" class="btn btn-secondary">
<i class="fas fa-times me-2"></i>Abbrechen
</a>
<button type="submit" class="btn btn-success">
<i class="fas fa-save me-2"></i>
{% if veranstaltung %}Aktualisieren{% else %}Erstellen{% endif %}
</button>
</div>
</div>
</div>
</form>
</div>
{% endblock %}

View File

@@ -8,7 +8,7 @@
<h1 class="h3 mb-0">
<i class="fas fa-calendar-alt me-2"></i>Veranstaltungen
</h1>
<a href="{% url 'admin:stiftung_veranstaltung_add' %}" class="btn btn-primary">
<a href="{% url 'stiftung:veranstaltung_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-1"></i>Neue Veranstaltung
</a>
</div>
@@ -68,7 +68,7 @@
{% else %}
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>Noch keine Veranstaltungen angelegt.
<a href="{% url 'admin:stiftung_veranstaltung_add' %}">Jetzt erste Veranstaltung erstellen.</a>
<a href="{% url 'stiftung:veranstaltung_create' %}">Jetzt erste Veranstaltung erstellen.</a>
</div>
{% endif %}
</div>

View File

@@ -0,0 +1,134 @@
{% extends "base.html" %}
{% block title %}Serienbrief-Vorschau {{ veranstaltung.titel }}{% endblock %}
{% block content %}
<div class="container-fluid mt-3">
<div class="d-flex justify-content-between align-items-center mb-3">
<h2>
Serienbrief-Vorschau
<small class="text-muted fs-6">{{ veranstaltung.titel }} ({{ veranstaltung.datum|date:"j. F Y" }})</small>
</h2>
<div class="d-flex gap-2">
<a href="{% url 'stiftung:veranstaltung_serienbrief_pdf' veranstaltung.pk %}"
class="btn btn-primary">
PDF generieren
</a>
<a href="{% url 'stiftung:veranstaltung_detail' veranstaltung.pk %}"
class="btn btn-outline-secondary">
Zurück zur Veranstaltung
</a>
</div>
</div>
{% if not teilnehmer %}
<div class="alert alert-warning">
Diese Veranstaltung hat noch keine Teilnehmer. Bitte zuerst Teilnehmer anlegen.
</div>
{% else %}
<div class="alert alert-info d-flex align-items-start gap-2 mb-3">
<span></span>
<div>
<strong>{{ teilnehmer.count }} Brief{% if teilnehmer.count != 1 %}e{% endif %}</strong> werden generiert.
Die Vorschau zeigt jeden Brief auf einer separaten Seite.
Platzhalter wie <code>{% verbatim %}{{ vorname }}{% endverbatim %}</code> sind hier bereits durch Beispieldaten ersetzt.
</div>
</div>
<!-- Navigation zwischen Briefen -->
<div class="mb-3 d-flex gap-2 align-items-center flex-wrap">
<strong>Empfänger:</strong>
{% for t in teilnehmer %}
<a href="#brief-{{ forloop.counter }}"
class="btn btn-sm btn-outline-secondary">
{{ t.nachname }}, {{ t.vorname }}
</a>
{% endfor %}
</div>
<!-- Einzelne Briefe -->
{% for t in teilnehmer %}
<div id="brief-{{ forloop.counter }}"
style="max-width:210mm;margin:0 auto 40px;padding:20mm 25mm;border:1px solid #dee2e6;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.1);font-family:'Times New Roman',Times,serif;font-size:11pt;line-height:1.4;">
<!-- Stiftungskopf -->
<div style="font-size:12pt;font-weight:bold;margin-bottom:2mm;">van Hees-Theyssen-Vogel'sche Stiftung</div>
<div style="font-size:8.5pt;color:#444;margin-bottom:5mm;">
Raesfelder Str. 3 &nbsp;·&nbsp; 46499 Hamminkeln
</div>
<!-- Empfänger -->
<div style="min-height:35mm;margin-bottom:5mm;">
<div style="font-size:7.5pt;border-bottom:1px solid #000;margin-bottom:3pt;padding-bottom:1pt;color:#444;">
van Hees-Theyssen-Vogel'sche Stiftung · Raesfelder Str. 3 · 46499 Hamminkeln
</div>
<p style="margin:0;line-height:1.3;">{{ t.anrede }} {{ t.vorname }} {{ t.nachname }}</p>
{% if t.strasse %}<p style="margin:0;line-height:1.3;">{{ t.strasse }}</p>{% endif %}
{% if t.plz or t.ort %}<p style="margin:0;line-height:1.3;">{{ t.plz }} {{ t.ort }}</p>{% endif %}
</div>
<!-- Datum -->
<div style="text-align:right;margin-bottom:4mm;">
Hamminkeln, den {{ veranstaltung.datum|date:"j. F Y" }}
</div>
<!-- Betreff -->
<div style="font-weight:bold;margin-bottom:4mm;">
{% if veranstaltung.betreff %}{{ veranstaltung.betreff }}{% else %}Einladung zum {{ veranstaltung.titel }}{% endif %}
</div>
<!-- Anrede -->
<div style="margin-bottom:3mm;">
Sehr geehrte{% if t.anrede == "Herr" %}r Herr{% elif t.anrede == "Frau" %} Frau{% else %}
{{ t.anrede }}{% endif %} {{ t.nachname }},
</div>
<!-- Brieftext -->
<div class="brieftext">
{% if veranstaltung.briefvorlage %}
{{ veranstaltung.briefvorlage|safe }}
{% else %}
<p>wir laden Sie herzlich ein, an der jährlichen Vorstellung der Rechnungslegung
der van Hees-Theyssen-Vogel'schen Stiftung teilzunehmen.</p>
<p>Die Veranstaltung findet statt am:</p>
<div style="margin:4mm 0 4mm 10mm;font-weight:bold;">
{{ veranstaltung.datum|date:"l, j. F Y" }}{% if veranstaltung.uhrzeit %}, {{ veranstaltung.uhrzeit|time:"H:i" }} Uhr{% endif %}<br>
{{ veranstaltung.ort }}<br>
{% if veranstaltung.adresse %}{{ veranstaltung.adresse }}{% endif %}
</div>
<p>Bitte teilen Sie uns Ihre Teilnahme bis zum <strong>4. April 2026</strong> mit.</p>
<p>Wir freuen uns auf Ihr Kommen.</p>
{% endif %}
<p>Mit freundlichen Grüßen</p>
</div>
<!-- Unterschriften -->
<div style="margin-top:10mm;">
<div style="display:inline-block;width:45%;vertical-align:top;">
{% if veranstaltung.unterschrift_1_name %}
<div style="border-top:1px solid #000;margin-bottom:2mm;width:80%;"></div>
{{ veranstaltung.unterschrift_1_name }}<br>
{{ veranstaltung.unterschrift_1_titel }}<br>
van Hees-Theyssen-Vogel'sche Stiftung
{% endif %}
</div>
<div style="display:inline-block;width:45%;vertical-align:top;">
{% if veranstaltung.unterschrift_2_name %}
<div style="border-top:1px solid #000;margin-bottom:2mm;width:80%;"></div>
{{ veranstaltung.unterschrift_2_name }}<br>
{{ veranstaltung.unterschrift_2_titel }}<br>
van Hees-Theyssen-Vogel'sche Stiftung
{% endif %}
</div>
</div>
<div style="text-align:right;margin-top:12mm;font-size:9pt;color:#999;">
Brief {{ forloop.counter }} von {{ teilnehmer.count }}
</div>
</div>
{% endfor %}
{% endif %}
</div>
{% endblock %}

View File

@@ -0,0 +1,35 @@
{% extends 'base.html' %}
{% block title %}Teilnehmer entfernen Stiftungsverwaltung{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row justify-content-center">
<div class="col-lg-6">
<div class="card shadow-sm">
<div class="card-header bg-danger text-white">
<i class="fas fa-exclamation-triangle me-2"></i>Teilnehmer entfernen
</div>
<div class="card-body">
<p>Möchten Sie den folgenden Teilnehmer wirklich aus der Veranstaltung entfernen?</p>
<div class="alert alert-warning">
<strong>{{ teilnehmer.anrede }} {{ teilnehmer.vorname }} {{ teilnehmer.nachname }}</strong><br>
<small class="text-muted">Veranstaltung: {{ veranstaltung.titel }}</small>
</div>
<form method="post">
{% csrf_token %}
<div class="d-flex justify-content-between">
<a href="{% url 'stiftung:veranstaltung_detail' veranstaltung.pk %}" class="btn btn-secondary">
<i class="fas fa-arrow-left me-2"></i>Abbrechen
</a>
<button type="submit" class="btn btn-danger">
<i class="fas fa-trash me-2"></i>Entfernen
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,119 @@
{% extends 'base.html' %}
{% block title %}{{ title }} Stiftungsverwaltung{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row">
<div class="col-12">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{% url 'stiftung:veranstaltung_list' %}">Veranstaltungen</a></li>
<li class="breadcrumb-item"><a href="{% url 'stiftung:veranstaltung_detail' veranstaltung.pk %}">{{ veranstaltung.titel }}</a></li>
<li class="breadcrumb-item active">{{ title }}</li>
</ol>
</nav>
<h1 class="h3 mb-4">
<i class="fas fa-user-plus text-primary me-2"></i>{{ title }}
</h1>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="card shadow-sm">
<div class="card-header bg-dark text-white">
<i class="fas fa-user me-2"></i>Teilnehmerdaten
</div>
<div class="card-body">
<form method="post" novalidate>
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger">
<ul class="mb-0">
{% for error in form.non_field_errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
<div class="row">
<div class="col-md-4 mb-3">
<label for="{{ form.anrede.id_for_label }}" class="form-label">{{ form.anrede.label }}</label>
{{ form.anrede }}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.vorname.id_for_label }}" class="form-label">{{ form.vorname.label }} *</label>
{{ form.vorname }}
{% if form.vorname.errors %}<div class="invalid-feedback d-block">{{ form.vorname.errors.0 }}</div>{% endif %}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.nachname.id_for_label }}" class="form-label">{{ form.nachname.label }} *</label>
{{ form.nachname }}
{% if form.nachname.errors %}<div class="invalid-feedback d-block">{{ form.nachname.errors.0 }}</div>{% endif %}
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="{{ form.strasse.id_for_label }}" class="form-label">{{ form.strasse.label }}</label>
{{ form.strasse }}
</div>
<div class="col-md-2 mb-3">
<label for="{{ form.plz.id_for_label }}" class="form-label">{{ form.plz.label }}</label>
{{ form.plz }}
</div>
<div class="col-md-4 mb-3">
<label for="{{ form.ort.id_for_label }}" class="form-label">{{ form.ort.label }}</label>
{{ form.ort }}
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="{{ form.email.id_for_label }}" class="form-label">{{ form.email.label }}</label>
{{ form.email }}
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.rsvp_status.id_for_label }}" class="form-label">{{ form.rsvp_status.label }}</label>
{{ form.rsvp_status }}
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="{{ form.paechter.id_for_label }}" class="form-label">{{ form.paechter.label }}</label>
{{ form.paechter }}
<div class="form-text">Optional: Verknüpfung mit bestehendem Pächter</div>
</div>
<div class="col-md-6 mb-3">
<label for="{{ form.destinataer.id_for_label }}" class="form-label">{{ form.destinataer.label }}</label>
{{ form.destinataer }}
<div class="form-text">Optional: Verknüpfung mit bestehendem Destinatär</div>
</div>
</div>
<div class="mb-3">
<label for="{{ form.bemerkungen.id_for_label }}" class="form-label">{{ form.bemerkungen.label }}</label>
{{ form.bemerkungen }}
</div>
<hr>
<div class="d-flex justify-content-between">
<a href="{% url 'stiftung:veranstaltung_detail' veranstaltung.pk %}" class="btn btn-secondary">
<i class="fas fa-times me-2"></i>Abbrechen
</a>
<button type="submit" class="btn btn-success">
<i class="fas fa-save me-2"></i>
{% if teilnehmer %}Aktualisieren{% else %}Hinzufügen{% endif %}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}