"""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.") )