44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
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 PflaenzliUser(User):
|
|
zipcode = models.PositiveIntegerField(blank=True)
|
|
|
|
|
|
class Offer(models.Model):
|
|
created = models.DateTimeField(default=timezone.now)
|
|
user = models.ForeignKey(PflaenzliUser, on_delete=models.CASCADE)
|
|
title = models.CharField(max_length=50)
|
|
description = models.TextField(max_length=5000)
|
|
zipcode = models.IntegerField(blank=True, default=0)
|
|
image = models.ImageField(upload_to="uploads/")
|
|
|
|
|
|
class Wish(models.Model):
|
|
created = models.DateTimeField(default=timezone.now)
|
|
user = models.ForeignKey(PflaenzliUser, 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)
|