models.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from django.db import models
  2. from colorfield.fields import ColorField
  3. class Group(models.Model):
  4. name = models.CharField(max_length=255)
  5. color = ColorField(default='#87bb37')
  6. def __str__(self) -> str:
  7. return str(self.name)
  8. class Meta:
  9. verbose_name = "Gruppe"
  10. verbose_name_plural = "Gruppen"
  11. class Person(models.Model):
  12. name = models.CharField(max_length=255)
  13. parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.PROTECT, related_name='parent_map', verbose_name="Eltern")
  14. partners = models.ManyToManyField('self', blank=True, verbose_name="Partner")
  15. birth_date = models.DateField(null=True, blank=True, verbose_name="Geburtsdatum")
  16. birth_town = models.CharField(max_length=255, null=True, blank=True, verbose_name="Geburtsort")
  17. death_date = models.DateField(null=True, blank=True, verbose_name="Todesdatum")
  18. death_town = models.CharField(max_length=255, null=True, blank=True, verbose_name="Todesort")
  19. comment = models.TextField(null=True, blank=True, verbose_name="Kommentar")
  20. image = models.ImageField(upload_to='stammbaum/images', null=True, blank=True, verbose_name="Bild")
  21. color = ColorField(null=True, blank=True, verbose_name="Farbe")
  22. group = models.ForeignKey(Group, on_delete=models.PROTECT, verbose_name="Gruppe")
  23. def __str__(self) -> str:
  24. tmp = self.name
  25. #if self.parent:
  26. # tmp = F"{self.parent.name} -> {tmp}"
  27. if self.birth_date:
  28. tmp += " *" + self.birth_date.strftime("%d.%m.%Y")
  29. return tmp
  30. class Meta:
  31. verbose_name = "Person"
  32. verbose_name_plural = "Personen"
  33. permissions = [
  34. (
  35. "view",
  36. "Can view Stammbaum"
  37. ),
  38. (
  39. "upload_image",
  40. "Can upload images"
  41. )
  42. ]