feat: Veranstaltungsmodul + Serienbrief mit editierbaren Feldern (STI-35, STI-39)
Implementierung des Veranstaltungsmoduls inkl. Serienbrief-PDF-Generator mit dynamischen, editierbaren Feldern für Betreff und Unterschriften. ### Veranstaltungsmodul (STI-35) - Neues Veranstaltungs-Modell: Titel, Datum, Uhrzeit, Ort, Gasthaus-Adresse, Briefvorlage, Gästeliste (VerstaltungsGast mit freien/Destinatär-Feldern) - Views: Veranstaltungsliste, -detail, Serienbrief-PDF-Generator - Templates: list.html, detail.html, serienbrief_pdf.html (A4, einseitig) - API: Serializer + Endpunkte für Veranstaltungen - Admin: Inline-Bearbeitung der Gästeliste - Migration: 0044_veranstaltungsmodul ### Serienbrief editierbare Felder + PDF-Fix (STI-39) - Neue Felder an Veranstaltung: betreff, unterschrift_1_name/titel, unterschrift_2_name/titel (mit Defaults: Katrin Kleinpaß / Jan Remmer Siebels) - PDF-CSS: Margins, Font-Sizes und Line-Heights reduziert für einseitigen Druck - Migration: 0045_add_serienbrief_editable_fields ### Infrastruktur - scripts/init-paperless-db.sh: Erstellt separate Paperless-DB beim DB-Init - compose.yml: init-paperless-db.sh eingebunden, PAPERLESS_DBNAME-Fix - .gitignore: .claude/ ausgeschlossen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -25,9 +25,9 @@
|
||||
--orange-dark: #e8590c;
|
||||
}
|
||||
|
||||
/* Global Typography - More Compact */
|
||||
/* Global Typography */
|
||||
html {
|
||||
font-size: 14px; /* Reduced from default 16px */
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
body {
|
||||
@@ -69,26 +69,6 @@
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
/* Compact margins */
|
||||
.mb-1 { margin-bottom: 0.25rem !important; }
|
||||
.mb-2 { margin-bottom: 0.4rem !important; }
|
||||
.mb-3 { margin-bottom: 0.75rem !important; }
|
||||
.mb-4 { margin-bottom: 1rem !important; }
|
||||
.mb-5 { margin-bottom: 1.5rem !important; }
|
||||
|
||||
.mt-1 { margin-top: 0.25rem !important; }
|
||||
.mt-2 { margin-top: 0.4rem !important; }
|
||||
.mt-3 { margin-top: 0.75rem !important; }
|
||||
.mt-4 { margin-top: 1rem !important; }
|
||||
.mt-5 { margin-top: 1.5rem !important; }
|
||||
|
||||
.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
|
||||
.py-2 { padding-top: 0.4rem !important; padding-bottom: 0.4rem !important; }
|
||||
.py-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
|
||||
|
||||
.px-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
|
||||
.px-2 { padding-left: 0.4rem !important; padding-right: 0.4rem !important; }
|
||||
.px-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
|
||||
|
||||
.border-left-primary {
|
||||
border-left: 0.25rem solid var(--racing-green) !important;
|
||||
@@ -209,19 +189,19 @@
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Tables - More Compact */
|
||||
/* Tables */
|
||||
.table {
|
||||
font-size: 0.8rem;
|
||||
font-size: 0.85rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
|
||||
.table th {
|
||||
border-top: none;
|
||||
font-weight: 600;
|
||||
color: var(--racing-green-dark);
|
||||
background-color: var(--grey-light);
|
||||
padding: 0.5rem;
|
||||
font-size: 0.75rem;
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.025em;
|
||||
}
|
||||
@@ -375,47 +355,61 @@
|
||||
color: var(--orange-dark);
|
||||
}
|
||||
|
||||
/* Responsive adjustments for very compact design */
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
html {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
|
||||
body {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
|
||||
.navbar-brand {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
|
||||
.navbar-nav .nav-link {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.375rem !important;
|
||||
}
|
||||
|
||||
|
||||
.card-body {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
|
||||
.btn {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
|
||||
.table {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
|
||||
.table th,
|
||||
.table td {
|
||||
padding: 0.375rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (min-width: 768px) and (max-width: 1200px) {
|
||||
html {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.container, .container-lg {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.table {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1400px) {
|
||||
.container-lg {
|
||||
max-width: 1400px;
|
||||
max-width: 1600px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -638,6 +632,23 @@
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!-- Veranstaltungen -->
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="veranstaltungenDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="fas fa-glass-cheers me-1"></i>Veranstaltungen
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="veranstaltungenDropdown">
|
||||
<li><a class="dropdown-item" href="{% url 'stiftung:veranstaltung_list' %}">
|
||||
<i class="fas fa-list me-2"></i>Alle Veranstaltungen
|
||||
</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><h6 class="dropdown-header">Aktionen</h6></li>
|
||||
<li><a class="dropdown-item" href="{% url 'stiftung:veranstaltung_list' %}">
|
||||
<i class="fas fa-envelope-open-text me-2"></i>Serienbrief drucken
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!-- Geschichte -->
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{% url 'stiftung:geschichte_list' %}">
|
||||
|
||||
Reference in New Issue
Block a user