1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-07-05 23:23:58 +02:00

Display detail about a passage

This commit is contained in:
Yohann D'ANELLO
2021-01-14 15:59:11 +01:00
parent f3f862c1ab
commit d912c8aab4
7 changed files with 178 additions and 13 deletions

View File

@ -340,6 +340,13 @@ class Passage(models.Model):
default="Non indiqué",
)
solution_number = models.PositiveSmallIntegerField(
verbose_name=_("defended solution"),
choices=[
(i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1)
],
)
defender = models.ForeignKey(
Participation,
on_delete=models.PROTECT,
@ -361,6 +368,16 @@ class Passage(models.Model):
related_name="+",
)
@property
def defended_solution(self) -> "Solution":
return Solution.objects.get(
participation=self.defender,
problem=self.solution_number,
final_solution=self.pool.tournament.final)
def get_absolute_url(self):
return reverse_lazy("participation:passage_detail", args=(self.pk,))
def clean(self):
if self.defender not in self.pool.participations.all():
raise ValidationError(_("Team {trigram} is not registered in the pool.")
@ -373,6 +390,10 @@ class Passage(models.Model):
.format(trigram=self.reporter.team.trigram))
return super().clean()
def __str__(self):
return _("Passage of {defender} for problem {problem}")\
.format(defender=self.defender.team, problem=self.solution_number)
class Meta:
verbose_name = _("passage")
verbose_name_plural = _("passages")