# Copyright (C) 2023 by Animath # SPDX-License-Identifier: GPL-3.0-or-later from django.conf import settings from django.db import models from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ from participation.models import Participation, Tournament class Draw(models.Model): tournament = models.OneToOneField( Tournament, on_delete=models.CASCADE, verbose_name=_('tournament'), ) class Meta: verbose_name = _('draw') verbose_name_plural = _('draws') class Round(models.Model): draw = models.ForeignKey( Draw, on_delete=models.CASCADE, verbose_name=_('draw'), ) number = models.IntegerField( choices=[ (1, _('Round 1')), (2, _('Round 2')), ], verbose_name=_('number'), ) def __str__(self): return self.get_number_display() class Meta: verbose_name = _('round') verbose_name_plural = _('rounds') class Pool(models.Model): round = models.ForeignKey( Round, on_delete=models.CASCADE, ) letter = models.CharField( max_length=1, choices=[ ('A', 'A'), ('B', 'B'), ('C', 'C'), ], verbose_name=_('letter'), ) def __str__(self): return f"{self.letter}{self.round}" class Meta: verbose_name = _('pool') verbose_name_plural = _('pools') class TeamDraw(models.Model): participation = models.ForeignKey( Participation, on_delete=models.CASCADE, verbose_name=_('participation'), ) accepted = models.IntegerField( choices=[ (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1) ], null=True, default=None, verbose_name=_("accepted problem"), ) purposed = models.IntegerField( choices=[ (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1) ], null=True, default=None, verbose_name=_("accepted problem"), ) rejected = models.JSONField( default=[], verbose_name=_('rejected problems'), ) class Meta: verbose_name = _('team draw') verbose_name_plural = _('team draws')