Files
SysAdmin Agent aed540fe4b
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / deploy (push) Has been cancelled
Code Quality / quality (push) Has been cancelled
Add Vorlagen editor, upload portal, onboarding, and participant import command
- Dokument-Vorlagen-Editor: create/edit/reset document templates (admin)
- Upload-Portal: public portal for Nachweis uploads via token
- Onboarding: invite Destinatäre via email with multi-step wizard
- Bestätigungsschreiben: preview and send confirmation letters
- Email settings: SMTP configuration UI
- Management command: import_veranstaltung_teilnehmer for bulk participant import

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 09:25:18 +00:00

55 lines
1.8 KiB
Python

import uuid
from django.contrib.auth.models import User
from django.db import models
class DokumentVorlage(models.Model):
"""Web-editierbare Vorlagen für generierte Dokumente (PDF, E-Mail, Berichte)."""
KATEGORIE_CHOICES = [
("pdf", "PDF-Dokument"),
("email", "E-Mail"),
("bericht", "Bericht"),
("serienbrief", "Serienbrief"),
]
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
schluessel = models.CharField(
max_length=200,
unique=True,
verbose_name="Schlüssel",
help_text="Interner Template-Pfad, z.B. pdf/bestaetigung.html",
)
bezeichnung = models.CharField(max_length=200, verbose_name="Bezeichnung")
kategorie = models.CharField(
max_length=30,
choices=KATEGORIE_CHOICES,
verbose_name="Kategorie",
)
html_inhalt = models.TextField(verbose_name="HTML-Inhalt")
verfuegbare_variablen = models.JSONField(
default=dict,
blank=True,
verbose_name="Verfügbare Variablen",
help_text="JSON-Dokumentation der verfügbaren Template-Variablen",
)
zuletzt_bearbeitet_von = models.ForeignKey(
User,
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="bearbeitete_vorlagen",
verbose_name="Zuletzt bearbeitet von",
)
zuletzt_bearbeitet_am = models.DateTimeField(auto_now=True, verbose_name="Zuletzt bearbeitet")
erstellt_am = models.DateTimeField(auto_now_add=True, verbose_name="Erstellt am")
class Meta:
verbose_name = "Dokument-Vorlage"
verbose_name_plural = "Dokument-Vorlagen"
ordering = ["kategorie", "bezeichnung"]
def __str__(self):
return f"{self.bezeichnung} ({self.schluessel})"