diff --git a/scipost_django/finances/admin.py b/scipost_django/finances/admin.py index c20c26aa5bf849a01a8e69cf6a8110afdd553514..3e333816cdc5f2660bcd6d44704c77afcaf6ba68 100644 --- a/scipost_django/finances/admin.py +++ b/scipost_django/finances/admin.py @@ -66,6 +66,17 @@ class SubsidyAdmin(admin.ModelAdmin): return obj.organization.get_orgtype_display() +@admin.action(description="Detach from all schedules") +def detach(modeladmin, request, queryset): + for obj in queryset: + if (payment_proof := getattr(obj, "proof_of_payment_for", None)) is not None: + payment_proof.proof_of_payment = None + payment_proof.save() + if (invoice_proof := getattr(obj, "invoice_for", None)) is not None: + invoice_proof.invoice = None + invoice_proof.save() + + @admin.register(SubsidyAttachment) class SubsidyAttachmentAdmin(admin.ModelAdmin): list_display = [ @@ -86,6 +97,7 @@ class SubsidyAttachmentAdmin(admin.ModelAdmin): "subsidy__organization__name_original", "subsidy__organization__acronym", ] + actions = [detach] @admin.register(SubsidyPayment)