From a68d4b1bee062417b4a807adfbf34dd361a3f39e Mon Sep 17 00:00:00 2001 From: George Katsikas <giorgakis.katsikas@gmail.com> Date: Tue, 27 Feb 2024 14:10:47 +0100 Subject: [PATCH] handle deletion & update of submissionattachments fix #193 --- scipost_django/finances/models.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/scipost_django/finances/models.py b/scipost_django/finances/models.py index a90ba3e00..67e1bed47 100644 --- a/scipost_django/finances/models.py +++ b/scipost_django/finances/models.py @@ -285,12 +285,22 @@ class SubsidyAttachment(models.Model): # Delete attachment files with same name if they exist, allowing replacement without name change @receiver(pre_save, sender=SubsidyAttachment) def delete_old_attachment_file(sender, instance, **kwargs): - if instance.pk: - old_attachment = SubsidyAttachment.objects.get(pk=instance.pk) - old_filename = old_attachment.attachment.name.split("/")[-1] + """ + Replace existing file on update if a new one is provided. + """ + if instance.pk and instance.attachment: + old = SubsidyAttachment.objects.get(pk=instance.pk) + if old.attachment and old.attachment != instance.attachment: + old.attachment.delete(save=False) + - if old_attachment.attachment and old_filename == instance.attachment.name: - old_attachment.attachment.delete(save=False) +@receiver(models.signals.post_delete, sender=SubsidyAttachment) +def auto_delete_file_on_delete(sender, instance, **kwargs): + """ + Deletes file from filesystem when its object is deleted. + """ + if instance.attachment: + instance.attachment.delete(save=False) ########################### -- GitLab