Add some properties to the models

This commit is contained in:
Yohann D'ANELLO 2020-12-28 17:49:59 +01:00
parent ad1337209d
commit f5ec9d1054
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
1 changed files with 53 additions and 22 deletions

View File

@ -171,6 +171,24 @@ class Tournament(models.Model):
if qs.exists():
return qs.get()
@property
def participations(self):
if self.final:
return Participation.objects.filter(final=True)
return self.participation_set
@property
def solutions(self):
if self.final:
return Solution.objects.filter(final_solution=True)
return Solution.objects.filter(participation__tournament=self)
@property
def syntheses(self):
if self.final:
return Synthesis.objects.filter(final_solution=True)
return Synthesis.objects.filter(participation__tournament=self)
class Meta:
verbose_name = _("tournament")
verbose_name_plural = _("tournaments")
@ -179,28 +197,6 @@ class Tournament(models.Model):
]
class Pool(models.Model):
tournament = models.ForeignKey(
Tournament,
on_delete=models.CASCADE,
verbose_name=_("tournament"),
)
round = models.PositiveSmallIntegerField(
verbose_name=_("round"),
)
juries = models.ManyToManyField(
VolunteerRegistration,
verbose_name=_("juries"),
related_name="jury_in",
)
class Meta:
verbose_name = _("pool")
verbose_name_plural = _("pools")
class Participation(models.Model):
"""
The Participation model contains all data that are related to the participation:
@ -266,6 +262,40 @@ class Participation(models.Model):
verbose_name_plural = _("participations")
class Pool(models.Model):
tournament = models.ForeignKey(
Tournament,
on_delete=models.CASCADE,
related_name="pools",
verbose_name=_("tournament"),
)
round = models.PositiveSmallIntegerField(
verbose_name=_("round"),
)
participations = models.ManyToManyField(
Participation,
related_name="pools",
verbose_name=_("participations"),
)
juries = models.ManyToManyField(
VolunteerRegistration,
related_name="jury_in",
verbose_name=_("juries"),
)
@property
def solutions(self):
return Solution.objects.filter(participation__in=self.participations, final_solution=self.tournament.final)
class Meta:
verbose_name = _("pool")
verbose_name_plural = _("pools")
class Solution(models.Model):
participation = models.ForeignKey(
Participation,
@ -307,6 +337,7 @@ class Synthesis(models.Model):
pool = models.ForeignKey(
Pool,
on_delete=models.CASCADE,
related_name="syntheses",
verbose_name=_("pool"),
)