digitaleagenturnc/timemanagement/models.py

63 lines
2.4 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
# 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)
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.DateTimeField(default=None, null=True, blank=True)
end = models.DateTimeField(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 CONFORM 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")
class FreeDays(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.CASCADE)
day = models.DateTimeField(default=None, null=True, blank=True)
name = models.CharField(default="", max_length=200)
year = models.IntegerField(default=0)