from django.db import models from pictures.models import PictureField from authtools.models import User from django.core.validators import RegexValidator # Create your models here. class Parish(models.Model): slug = models.SlugField("Identyfikator", primary_key=True) name = models.CharField("Nazwa", max_length=512) visible = models.BooleanField("Parafia widoczna", default=False) icon = PictureField( "Ikona", upload_to="icons", height_field="icon_height", width_field="icon_width", null=True, blank=True ) icon_width = models.PositiveIntegerField(null=True) icon_height = models.PositiveIntegerField(null=True) channel = models.CharField("Identyfikator kanału", max_length=64, blank=True, null=True) submissions = models.BooleanField("Kolęda aktywna", default=False) announcements = models.TextField("Skrypt - Ogłoszenia", blank=True, null=True) intentions = models.TextField("Skrypt - Intencje", blank=True, null=True) streets = models.JSONField("Ulice", default=list, null=True, blank=True) def __str__(self): return self.name class Meta: verbose_name = "Parafia" verbose_name_plural = "Parafie" ordering = ["slug"] class Submission(models.Model): user = models.OneToOneField( User, on_delete=models.CASCADE, related_name="submission", verbose_name="Użytkownik", null=True, blank=True ) parish = models.ForeignKey(Parish, on_delete=models.CASCADE, related_name="submission", verbose_name="Parafia") name = models.CharField("Imię i nazwisko", max_length=256) phone_regex = RegexValidator(regex=r"^\+?1?\d{9,15}$", message="Numer telefonu musi być postaci: '(+48)123456789'") phone = models.CharField("Numer telefonu", max_length=32, validators=[phone_regex]) street = models.CharField("Ulica", max_length=128) street_number = models.PositiveIntegerField("Numer domu") apartement_number = models.PositiveIntegerField("Numer mieszkania", null=True, blank=True) @property def adres(self): return ( f"{self.street} {self.street_number}{'/' + str(self.apartement_number) if self.apartement_number else ''}" ) class Meta: verbose_name = "Zgłoszenie" verbose_name_plural = "Zgłoszenia" class Priest(models.Model): priest = models.OneToOneField(User, on_delete=models.CASCADE, related_name="priest_rel", verbose_name="Ksiądz") parish = models.ForeignKey(Parish, on_delete=models.CASCADE, related_name="priest_rel", verbose_name="Parafia") class Meta: verbose_name = "Ksiądz" verbose_name_plural = "Księża"