pflaenz.li/pflaenzli/pflaenzli/models.py

48 lines
1.7 KiB
Python
Raw Normal View History

2023-04-16 01:01:14 +02:00
import os
2023-02-19 12:29:08 +01:00
from django.db import models
2023-03-31 18:10:38 +02:00
from django.dispatch import receiver
2023-04-05 23:39:26 +02:00
from django.contrib.auth.models import AbstractUser
2023-02-19 23:56:05 +01:00
from django.utils import timezone
2023-03-31 18:10:38 +02:00
from django.core.files.storage import default_storage
2023-05-16 23:36:40 +02:00
from django.utils.translation import gettext_lazy as _
2023-02-19 12:29:08 +01:00
2023-02-19 23:56:05 +01:00
2023-04-05 23:39:26 +02:00
class PflaenzliUser(AbstractUser):
2023-04-09 12:38:05 +02:00
email = models.EmailField(max_length=254)
2023-05-16 23:36:40 +02:00
zipcode = models.PositiveIntegerField(blank=True, null=True, verbose_name=_('ZIP Code'))
2023-04-05 18:18:55 +02:00
2023-02-19 23:56:05 +01:00
class Offer(models.Model):
created = models.DateTimeField(default=timezone.now)
2023-04-05 18:18:55 +02:00
user = models.ForeignKey(PflaenzliUser, on_delete=models.CASCADE)
2023-05-16 23:36:40 +02:00
title = models.CharField(max_length=50, verbose_name=_('Title'))
description = models.TextField(max_length=5000, verbose_name=_('Description'))
zipcode = models.IntegerField(blank=True, default=0, verbose_name=_('ZIP Code'))
image = models.ImageField(upload_to="uploads/", verbose_name=_('Image'))
2023-02-19 23:56:05 +01:00
class Wish(models.Model):
created = models.DateTimeField(default=timezone.now)
2023-04-05 18:18:55 +02:00
user = models.ForeignKey(PflaenzliUser, on_delete=models.CASCADE)
2023-05-16 23:36:40 +02:00
title = models.CharField(max_length=200, verbose_name=_('Title'))
2023-03-31 18:10:38 +02:00
@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
2023-03-31 22:51:53 +02:00
except sender.DoesNotExist:
2023-03-31 18:10:38 +02:00
return False
default_storage.delete(old_image.path)