Squash merge feature/email-notifications into beta
This commit is contained in:
35
claims/management/commands/reset_claims.py
Normal file
35
claims/management/commands/reset_claims.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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.")
|
||||
)
|
||||
Reference in New Issue
Block a user