models.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from django.db import models
  2. from django.utils.translation import gettext_lazy as _
  3. # Create your models here.
  4. class Helper(models.Model):
  5. date = models.DateField()
  6. ben = models.PositiveSmallIntegerField()
  7. best = models.PositiveSmallIntegerField()
  8. info = models.TextField(blank=True, null=True)
  9. def __str__(self):
  10. return f"{self.date} - {self.ben} - {self.best}"
  11. class Employee(models.Model):
  12. name = models.CharField(max_length=100)
  13. daily_workhours = models.PositiveIntegerField()
  14. info = models.TextField(blank=True, null=True)
  15. def __str__(self):
  16. return self.name
  17. class Shift(models.Model):
  18. class ShiftType(models.TextChoices):
  19. NONE = 'N', _('None') # Placeholder for "None" if you're using it
  20. VACATION = 'U', _('Urlaub')
  21. CATERING = 'C', _('Catering')
  22. SICK = 'K', _('Krank')
  23. RB = 'RB', _('Rufbereitschaft')
  24. SD = 'SO', _('Sonderdienst')
  25. KK = 'KKH', _('KKH')
  26. ST = 'ST', _('Stapler')
  27. AH = 'AH', _('Ausser Haus')
  28. date = models.DateField()
  29. start = models.TimeField(null=True, blank=True)
  30. end = models.TimeField(null=True, blank=True)
  31. shifttype = models.CharField(
  32. max_length=3,
  33. choices=ShiftType.choices,
  34. default=ShiftType.NONE,
  35. null=True,
  36. )
  37. employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
  38. def __str__(self):
  39. return f"{self.date} - {self.get_shifttype_display()}"
  40. class Location(models.Model):
  41. name = models.CharField(max_length=100)
  42. def __str__(self):
  43. return self.name
  44. class Event(models.Model):
  45. class EventType(models.TextChoices):
  46. NONE = '', _('None')
  47. AUFBAU = 'AU', _('Aufbau')
  48. ABBAU = 'AB', _('Abbau')
  49. UMBAU = 'UM', _('Umbau')
  50. VATAG = 'VA', _('VA-Tag')
  51. SPIELTAG = 'ST', _('Spieltag')
  52. TRAINING = 'TR', _('Training')
  53. date = models.DateField()
  54. name = models.CharField(max_length=100)
  55. event_type = models.CharField(
  56. max_length=2,
  57. choices=EventType.choices,
  58. default=EventType.NONE,
  59. null=True,
  60. )
  61. location = models.ForeignKey(Location, on_delete=models.CASCADE)
  62. cvd = models.ForeignKey(Employee, related_name='cvt', on_delete=models.SET_NULL, null=True, blank=True)
  63. cvt = models.ForeignKey(Employee, related_name='cvd', on_delete=models.SET_NULL, null=True, blank=True)
  64. def __str__(self):
  65. return f"{self.date} - {self.name}"