mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2024-12-24 17:42:23 +00:00
Prepare database model
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
parent
849194414d
commit
ad4593a2f6
102
draw/models.py
Normal file
102
draw/models.py
Normal file
@ -0,0 +1,102 @@
|
||||
# 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')
|
Loading…
Reference in New Issue
Block a user