You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.7 KiB

from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
from django.contrib import admin
# Create your models here.
class department(models.Model):
title = models.CharField(max_length=255)
uebergeordnete_abteilung = models.ForeignKey(
'self', # Verweis auf dieselbe Tabelle
on_delete=models.SET_NULL, # Verhalten beim Löschen der übergeordneten Abteilung
null=True, # Darf leer sein (falls keine übergeordnete Abteilung existiert)
blank=True,
related_name='unterabteilungen' # Ermöglicht Rückbezug
)
class Meta:
verbose_name = ("Abteilung")
verbose_name_plural = ("Abteilungen")
def __str__(self):
return self.title
class congregation(models.Model):
title = models.CharField(("Name"), max_length=150)
class Meta:
verbose_name = ("Versammlung")
verbose_name_plural = ("Versammlungen")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("congregation_detail", kwargs={"pk": self.pk})
class role(models.Model):
name = models.CharField(("name"), max_length=50)
class Meta:
verbose_name = ("Rolle")
verbose_name_plural = ("Rollen")
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("role_detail", kwargs={"pk": self.pk})
class contributors(models.Model):
TAGE = {
"MiV": 1,
"MiN": 2,
"DoV": 4,
"DoN": 8,
"FrV": 16,
"FrN": 32,
"SaV": 64,
"SaN": 128,
"SoV": 256,
"SoN": 512,
"Abbau": 1024,
}
name = models.CharField(("name"), max_length=50)
firstname = models.CharField(("vorname"), max_length=50)
birthday = models.DateField(("geburtstag"), auto_now=False, auto_now_add=False, blank=True, null=True)
congregation = models.ForeignKey("main.congregation", verbose_name=("Versammlung"), on_delete=models.SET_NULL, null=True, blank=True)
roles = models.ManyToManyField("main.role", verbose_name=("role"), null=True, blank=True)
pioneer = models.BooleanField(("pionier"), default=False)
svd = models.BooleanField(("s.v.d."), default=False)
gender = models.CharField("Geschlecht",max_length=20, choices=[("M", "Männlich"), ("W", "Weiblich")])
da_approval = models.BooleanField(("Freigabe"), default=False)
deparment = models.ManyToManyField("main.department", verbose_name=("Abteilung"), null=True, blank=True)
tage = models.IntegerField(default=0) # Hier speichern wir die Bitmaske
teamleader = models.BooleanField(("Leiter"), default=False)
second_teamleader = models.BooleanField(("Gruppenleiter"), default=False)
mobilnumber = PhoneNumberField(("Mobilnummer"), null=True, blank=True)
email = models.EmailField(("E-Mail"), max_length=254, null=True, blank=True)
jwpub = models.EmailField(("JWPUB"), max_length=254, null=True, blank=True)
notes = models.CharField(("Bemerkung"), max_length=255, null=True, blank=True)
actual = models.BooleanField(("Aktuell"), default=False)
class Meta:
verbose_name = ("Helfer")
verbose_name_plural = ("Helfer")
@property
@admin.display(
ordering="name",
description="Name, Vorname",
boolean=False,
)
def full_name(self):
return self.name + ", " + self.firstname
def get_tage_list(self):
""" Gibt eine Liste der aktiven Tage zurück """
return [name for name, bit in self.TAGE.items() if self.tage & bit]
def __str__(self):
return f'{self.name}, {self.firstname}'
def get_absolute_url(self):
return reverse("contributors_detail", kwargs={"pk": self.pk})

Powered by TurnKey Linux.