from django.db import models from django.contrib.auth.models import User from users.models import Agency from django.core.exceptions import ValidationError from colorful.fields import RGBColorField # Create your models here. class Workday(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) agency = models.ForeignKey(Agency, on_delete=models.CASCADE) breaks = models.ManyToManyField("Breaks", blank=True, related_name='breaks_at_day') start = models.DateTimeField(default=None, null=True, blank=True) end = models.DateTimeField(default=None, null=True, blank=True) target = models.FloatField(default=8.0) class Breaks(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) agency = models.ForeignKey(Agency, on_delete=models.CASCADE) workday = models.ForeignKey("Workday", on_delete=models.CASCADE, related_name='workdayele') start = models.DateTimeField(default=None, null=True, blank=True) end = models.DateTimeField(default=None, null=True, blank=True) class AbsenceReason(models.Model): agency = models.ForeignKey(Agency, on_delete=models.CASCADE) name = models.CharField(default="", max_length=200) need_confirm = models.BooleanField(default=True) need_rep = models.BooleanField(default=True) is_holiday = models.BooleanField(default=True) color = RGBColorField(colors=['#FFB900', '#E74856', '#0078D7', '#0099BC', '#7A7574'], default='#0099BC', blank=True) def __str__(self): return f'{self.name}' class Absence(models.Model): dayinfochoices = [ (0, 'Ganzer Tag'), (1, 'Nur Vormittags'), (2, 'Nur Nachmittags') ] startday_info = models.CharField(max_length=2, choices=dayinfochoices, default=0) endday_info = models.CharField(max_length=2, choices=dayinfochoices, default=0) user = models.ForeignKey(User, on_delete=models.CASCADE) agency = models.ForeignKey(Agency, on_delete=models.CASCADE) start = models.DateField(default=None, null=True, blank=True) end = models.DateField(default=None, null=True, blank=True) start_ishalf = models.BooleanField(default=False, blank=True) end_ishalf = models.BooleanField(default=False, blank=True) reason = models.ForeignKey("AbsenceReason", on_delete=models.PROTECT, null=True, blank=True) info = models.TextField(blank=True, verbose_name='Abwesenheitsbegründung', default="") ''' CONFIRM_STATUS INFOS 0 = NO NEED TO CONFIRM AND CONFIRM OK 1 = IS CONFIRMED, AWAITING OK 2 = NOT CONFIRMED ''' confirm_status = models.IntegerField(default=0) confirm_info = models.TextField(blank=True, verbose_name='Begründung', default="") representator = models.ForeignKey(User, blank=True, default=None, null=True, on_delete=models.CASCADE, related_name="Vertreter") holidays_normal = models.FloatField(default=0.0, max_length=9, blank=True) holidays_rest = models.FloatField(default=0.0, max_length=9, blank=True) holidays_normal_next = models.FloatField(default=0.0, max_length=9, blank=True) holidays_rest_next = models.FloatField(default=0.0, max_length=9, blank=True) class FreeDays(models.Model): agency = models.ForeignKey(Agency, on_delete=models.CASCADE) day = models.DateField(default=None, null=True, blank=True) name = models.CharField(default="", max_length=200) year = models.IntegerField(default=0)