- 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>
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Management-Command: Stellt alle DokumentVorlage-Einträge aus den Originaldateien wieder her."""
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from stiftung.models import DokumentVorlage
|
|
from stiftung.utils.vorlagen import get_vorlage_original
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Stellt alle DokumentVorlage-Einträge aus den Original-Dateien wieder her."
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
"--dry-run",
|
|
action="store_true",
|
|
help="Zeigt nur an, was geändert würde, ohne tatsächlich zu ändern.",
|
|
)
|
|
|
|
def handle(self, *args, **options):
|
|
dry_run = options["dry_run"]
|
|
vorlagen = DokumentVorlage.objects.all()
|
|
|
|
if not vorlagen.exists():
|
|
self.stdout.write(self.style.WARNING("Keine DokumentVorlage-Einträge gefunden."))
|
|
return
|
|
|
|
restored = 0
|
|
skipped = 0
|
|
for vorlage in vorlagen:
|
|
try:
|
|
original = get_vorlage_original(vorlage.schluessel)
|
|
except FileNotFoundError:
|
|
self.stdout.write(
|
|
self.style.WARNING(f" SKIP: {vorlage.schluessel} — Original-Datei nicht gefunden")
|
|
)
|
|
skipped += 1
|
|
continue
|
|
|
|
if dry_run:
|
|
self.stdout.write(f" WÜRDE WIEDERHERSTELLEN: {vorlage.schluessel}")
|
|
else:
|
|
vorlage.html_inhalt = original
|
|
vorlage.save(update_fields=["html_inhalt", "zuletzt_bearbeitet_am"])
|
|
self.stdout.write(self.style.SUCCESS(f" OK: {vorlage.schluessel}"))
|
|
restored += 1
|
|
|
|
action = "würden wiederhergestellt" if dry_run else "wiederhergestellt"
|
|
self.stdout.write(
|
|
self.style.SUCCESS(f"\n{restored} Vorlagen {action}, {skipped} übersprungen.")
|
|
)
|