Files
eparafia/backend/models.py
2025-06-26 15:57:42 +02:00

66 lines
2.6 KiB
Python

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"