diff --git a/backend/server/adventures/models.py b/backend/server/adventures/models.py index 40bb680..b79fa6d 100644 --- a/backend/server/adventures/models.py +++ b/backend/server/adventures/models.py @@ -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'}" diff --git a/backend/server/adventures/views/adventure_image_view.py b/backend/server/adventures/views/adventure_image_view.py index db62ce8..537aab2 100644 --- a/backend/server/adventures/views/adventure_image_view.py +++ b/backend/server/adventures/views/adventure_image_view.py @@ -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):