| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from django.contrib.auth.models import User
- from django.db import models
- from martor.models import MartorField
- class BaseModel(models.Model):
- created = models.DateTimeField(auto_now_add=True)
- updated = models.DateTimeField(auto_now=True)
- objects = models.Manager()
-
- class Meta:
- abstract = True
- def model_name(self):
- return self._meta.verbose_name
- class Project(BaseModel):
- class Meta:
- verbose_name = "projet"
- verbose_name_plural = "projets"
-
- name = models.CharField(max_length=200)
- description = models.TextField(default="", blank=True)
- # icon
- owner = models.ForeignKey(User,
- on_delete=models.PROTECT,
- null=True,
- related_name="projects",
- related_query_name="project")
-
- def __str__(self):
- return self.name
-
- class Epic(BaseModel):
- class Meta:
- verbose_name = "epic"
- verbose_name_plural = "epics"
- ordering = ('-value', )
-
- SIZES = (("XXS","XXS (< 1 sprints)"),
- ("XS", "XS (1 sprint)"),
- ("S", "S (1-2 sprints)"),
- ("M", "M (2-3 sprints)"),
- ("L", "L (3-4 sprints)"),
- ("XL", "XL (4-6 sprints)"),
- ("XXL", "XXL (> 6 sprints)"))
-
- name = models.CharField(max_length=200, default="", verbose_name="Nom")
- size = models.CharField(max_length=10, default="M", choices=SIZES, verbose_name="Taille")
- value = models.IntegerField(default=0, verbose_name="Valeur")
- description = models.TextField(default="", blank=True, verbose_name="Description")
- project = models.ForeignKey(Project, on_delete=models.PROTECT, null=True, verbose_name="Projet")
-
- def __str__(self):
- return self.name
-
- class Sprint(BaseModel):
- class Meta:
- verbose_name_plural = "sprint"
- verbose_name_plural = "sprints"
- ordering = ('date_start', )
- date_start = models.DateField()
- date_end = models.DateField()
-
- def __str__(self):
- return "Sprint #{} ({:%d/%m/%Y} > {:%d/%m/%Y})".format(self.id, self.date_start, self.date_end)
-
- class Story(BaseModel):
- class Meta:
- verbose_name = "story"
- verbose_name_plural = "stories"
- ordering = ('-updated', )
- epic = models.ForeignKey(Epic, on_delete=models.PROTECT, null=True, related_name="stories", verbose_name="Epic")
- name = models.CharField(max_length=200, default="", verbose_name="Nom")
- description = MartorField(verbose_name="Description")
- closed = models.BooleanField(default=False, verbose_name="Clôturée")
- author = models.ForeignKey(User,
- on_delete=models.PROTECT,
- null=True,
- related_name="stories",
- related_query_name="story",
- verbose_name="Auteur")
-
- assignees = models.ManyToManyField(User,
- related_name="assigned",
- verbose_name="Assignés")
-
- sprints = models.ManyToManyField(Sprint,
- related_name="stories",
- related_query_name="story",
- verbose_name="Sprints")
-
- def __str__(self):
- return self.name
-
|