From bed72e92da37854e896556d886a1744c8fd421ee Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Mon, 23 Jun 2025 18:44:11 -0400 Subject: [PATCH] fix(models): ensure associated Attachment files are deleted and their filesystem cleaned up on Adventure deletion --- backend/server/adventures/models.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/server/adventures/models.py b/backend/server/adventures/models.py index b79fa6d..6a3d970 100644 --- a/backend/server/adventures/models.py +++ b/backend/server/adventures/models.py @@ -660,6 +660,9 @@ class Adventure(models.Model): # Delete all associated AdventureImages first to trigger their filesystem cleanup for image in self.images.all(): image.delete() + # Delete all associated Attachment files first to trigger their filesystem cleanup + for attachment in self.attachments.all(): + attachment.delete() super().delete(*args, **kwargs) def __str__(self): @@ -861,6 +864,11 @@ class Attachment(models.Model): adventure = models.ForeignKey(Adventure, related_name='attachments', on_delete=models.CASCADE) name = models.CharField(max_length=200, null=True, blank=True) + def delete(self, *args, **kwargs): + if self.file and os.path.isfile(self.file.path): + os.remove(self.file.path) + super().delete(*args, **kwargs) + def __str__(self): return self.file.url