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