67 lines
2.7 KiB
Python
67 lines
2.7 KiB
Python
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)
|
|
|
|
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):
|
|
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.SET_NULL, 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)
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|