# Django imports from django.db import models from django.conf import settings # Module imports from . import ProjectBaseModel class Cycle(ProjectBaseModel): STATUS_CHOICES = ( ("draft", "Draft"), ("started", "Started"), ("completed", "Completed"), ) name = models.CharField(max_length=255, verbose_name="Cycle Name") description = models.TextField(verbose_name="Cycle Description", blank=True) start_date = models.DateField(verbose_name="Start Date", blank=True, null=True) end_date = models.DateField(verbose_name="End Date", blank=True, null=True) owned_by = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="owned_by_cycle", ) status = models.CharField( max_length=255, verbose_name="Cycle Status", choices=STATUS_CHOICES, default="draft", ) class Meta: verbose_name = "Cycle" verbose_name_plural = "Cycles" db_table = "cycle" ordering = ("-created_at",) def __str__(self): """Return name of the cycle""" return f"{self.name} <{self.project.name}>" class CycleIssue(ProjectBaseModel): """ Cycle Issues """ issue = models.OneToOneField( "db.Issue", on_delete=models.CASCADE, related_name="issue_cycle" ) cycle = models.ForeignKey( Cycle, on_delete=models.CASCADE, related_name="issue_cycle" ) class Meta: verbose_name = "Cycle Issue" verbose_name_plural = "Cycle Issues" db_table = "cycle_issue" ordering = ("-created_at",) def __str__(self): return f"{self.cycle}"