diff --git a/pflaenzli/models.py b/pflaenzli/models.py index ce75df9..7bcb3cd 100644 --- a/pflaenzli/models.py +++ b/pflaenzli/models.py @@ -1,6 +1,8 @@ from django.db import models +from django.dispatch import receiver from django.contrib.auth.models import User from django.utils import timezone +from django.core.files.storage import default_storage class Offer(models.Model): @@ -16,3 +18,22 @@ class Wish(models.Model): created = models.DateTimeField(default=timezone.now) user = models.ForeignKey(User, on_delete=models.CASCADE) title = models.CharField(max_length=200) + + +@receiver(models.signals.post_delete, sender=Offer) +def auto_delete_image_on_delete(sender, instance, **kwargs): + """ + Deletes image from filesystem when corresponding `Offer` object is deleted. + """ + if instance.image and os.path.isfile(instance.image.path): + default_storage.delete(instance.image.path) + + +@receiver(models.signals.pre_save, sender=Offer) +def delete_old_image(sender, instance, **kwargs): + try: + old_image = sender.objects.get(pk=instance.pk).image + except sender.doesNotExist: + return False + + default_storage.delete(old_image.path) diff --git a/pflaenzli/templates/offer/detail.html b/pflaenzli/templates/offer/detail.html index 6de2e12..b15400b 100644 --- a/pflaenzli/templates/offer/detail.html +++ b/pflaenzli/templates/offer/detail.html @@ -38,34 +38,35 @@ {% if offer.user == user %} - + +