1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-04 12:45:17 +02:00

fix(models): ensure associated AdventureImages are deleted and files cleaned up on Adventure deletion

This commit is contained in:
Sean Morley 2025-06-23 18:36:52 -04:00
parent 7ad3da6455
commit 07346bf03d
2 changed files with 12 additions and 4 deletions

View file

@ -656,6 +656,12 @@ class Adventure(models.Model):
return result
def delete(self, *args, **kwargs):
# Delete all associated AdventureImages first to trigger their filesystem cleanup
for image in self.images.all():
image.delete()
super().delete(*args, **kwargs)
def __str__(self):
return self.name
@ -838,6 +844,12 @@ class AdventureImage(models.Model):
self.full_clean() # This calls clean() method
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
# Remove file from disk when deleting AdventureImage
if self.image and os.path.isfile(self.image.path):
os.remove(self.image.path)
super().delete(*args, **kwargs)
def __str__(self):
return self.image.url if self.image else f"Immich ID: {self.immich_id or 'No image'}"

View file

@ -156,10 +156,6 @@ class AdventureImageViewSet(viewsets.ModelViewSet):
return super().update(request, *args, **kwargs)
def perform_destroy(self, instance):
print("perform_destroy")
if instance.image:
if os.path.isfile(instance.image.path):
os.remove(instance.image.path)
return super().perform_destroy(instance)
def destroy(self, request, *args, **kwargs):