36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
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.")
|
|
)
|