from datetime import timedelta from django.db import models class Parent(models.Model): project_num = models.CharField(max_length=32, blank=True, verbose_name="Project number") name = models.CharField(max_length=256) is_productive = models.BooleanField(default=False) def __str__(self): return self.name class Project(models.Model): parent = models.ForeignKey( Parent, on_delete=models.CASCADE, null=True ) name = models.CharField(max_length=256) def __str__(self): return self.name class Task(models.Model): project = models.ForeignKey(Project, on_delete=models.CASCADE) date = models.DateField(null=False) duration = models.IntegerField(null=False, default=0) name = models.CharField(max_length=512, default="") class Meta: constraints = [ models.UniqueConstraint(fields=["date", "project", "name"], name="unique_daily_task") ] class Clocking(models.Model): date = models.DateField() in_am = models.TimeField(null=True, default=None, verbose_name="Clock in AM") out_am = models.TimeField(null=True, default=None, verbose_name="Clock out AM") in_pm = models.TimeField(null=True, default=None, verbose_name="Clock in PM") out_pm = models.TimeField(null=True, default=None, verbose_name="Clock out PM") remote = models.DurationField(default=timedelta) class RealSageXHours(models.Model): parent = models.ForeignKey(Parent, on_delete=models.CASCADE) date = models.DateField() hours = models.DurationField(default=timedelta) class Meta: constraints = [ models.UniqueConstraint(fields=["parent", "date"], name="unique_monthly_sagex") ]