from django.core.management.base import BaseCommand from django.db import transaction from claims.models import Claim class Command(BaseCommand): help = "Tar bort samtliga utlägg (claims) men lämnar användarkonton orörda." def add_arguments(self, parser): parser.add_argument( "--noinput", action="store_true", help="Utför rensningen utan interaktiv bekräftelse.", ) def handle(self, *args, **options): if not options["noinput"]: confirm = input( "Detta tar bort alla claims inklusive loggar och kvitton men lämnar konton. Fortsätt? (skriv 'ja'): " ) if confirm.lower() != "ja": self.stdout.write(self.style.WARNING("Avbrutet.")) return count = Claim.objects.count() with transaction.atomic(): for claim in Claim.objects.iterator(): if claim.receipt: claim.receipt.delete(save=False) Claim.objects.all().delete() self.stdout.write( self.style.SUCCESS(f"Raderade {count} claims och tillhörande loggar/kvitton.") )