diff --git a/draw/migrations/0001_initial.py b/draw/migrations/0001_initial.py new file mode 100644 index 0000000..288ee16 --- /dev/null +++ b/draw/migrations/0001_initial.py @@ -0,0 +1,331 @@ +# Generated by Django 4.1.7 on 2023-03-22 15:27 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + ("participation", "0003_alter_team_trigram"), + ] + + operations = [ + migrations.CreateModel( + name="Draw", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ], + options={ + "verbose_name": "draw", + "verbose_name_plural": "draws", + }, + ), + migrations.CreateModel( + name="Pool", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "letter", + models.CharField( + choices=[("A", "A"), ("B", "B"), ("C", "C")], + max_length=1, + verbose_name="letter", + ), + ), + ], + options={ + "verbose_name": "pool", + "verbose_name_plural": "pools", + }, + ), + migrations.CreateModel( + name="TeamDraw", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "index", + models.PositiveSmallIntegerField( + choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)], + verbose_name="index", + ), + ), + ( + "accepted", + models.IntegerField( + choices=[ + (1, "Problem #1"), + (2, "Problem #2"), + (3, "Problem #3"), + (4, "Problem #4"), + (5, "Problem #5"), + (6, "Problem #6"), + (7, "Problem #7"), + (8, "Problem #8"), + ], + default=None, + null=True, + verbose_name="accepted problem", + ), + ), + ( + "last_dice", + models.IntegerField( + choices=[ + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), + (17, 17), + (18, 18), + (19, 19), + (20, 20), + (21, 21), + (22, 22), + (23, 23), + (24, 24), + (25, 25), + (26, 26), + (27, 27), + (28, 28), + (29, 29), + (30, 30), + (31, 31), + (32, 32), + (33, 33), + (34, 34), + (35, 35), + (36, 36), + (37, 37), + (38, 38), + (39, 39), + (40, 40), + (41, 41), + (42, 42), + (43, 43), + (44, 44), + (45, 45), + (46, 46), + (47, 47), + (48, 48), + (49, 49), + (50, 50), + (51, 51), + (52, 52), + (53, 53), + (54, 54), + (55, 55), + (56, 56), + (57, 57), + (58, 58), + (59, 59), + (60, 60), + (61, 61), + (62, 62), + (63, 63), + (64, 64), + (65, 65), + (66, 66), + (67, 67), + (68, 68), + (69, 69), + (70, 70), + (71, 71), + (72, 72), + (73, 73), + (74, 74), + (75, 75), + (76, 76), + (77, 77), + (78, 78), + (79, 79), + (80, 80), + (81, 81), + (82, 82), + (83, 83), + (84, 84), + (85, 85), + (86, 86), + (87, 87), + (88, 88), + (89, 89), + (90, 90), + (91, 91), + (92, 92), + (93, 93), + (94, 94), + (95, 95), + (96, 96), + (97, 97), + (98, 98), + (99, 99), + (100, 100), + ], + verbose_name="last dice", + ), + ), + ( + "purposed", + models.IntegerField( + choices=[ + (1, "Problem #1"), + (2, "Problem #2"), + (3, "Problem #3"), + (4, "Problem #4"), + (5, "Problem #5"), + (6, "Problem #6"), + (7, "Problem #7"), + (8, "Problem #8"), + ], + default=None, + null=True, + verbose_name="accepted problem", + ), + ), + ( + "rejected", + models.JSONField(default=list, verbose_name="rejected problems"), + ), + ( + "participation", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="participation.participation", + verbose_name="participation", + ), + ), + ( + "pool", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="draw.pool", + verbose_name="pool", + ), + ), + ], + options={ + "verbose_name": "team draw", + "verbose_name_plural": "team draws", + }, + ), + migrations.CreateModel( + name="Round", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "number", + models.IntegerField( + choices=[(1, "Round 1"), (2, "Round 2")], verbose_name="number" + ), + ), + ( + "current_pool", + models.ForeignKey( + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="+", + to="draw.pool", + verbose_name="current pool", + ), + ), + ( + "draw", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="draw.draw", + verbose_name="draw", + ), + ), + ], + options={ + "verbose_name": "round", + "verbose_name_plural": "rounds", + }, + ), + migrations.AddField( + model_name="pool", + name="current_team", + field=models.ForeignKey( + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="+", + to="draw.teamdraw", + verbose_name="current team", + ), + ), + migrations.AddField( + model_name="pool", + name="round", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="draw.round" + ), + ), + migrations.AddField( + model_name="draw", + name="current_round", + field=models.ForeignKey( + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="+", + to="draw.round", + verbose_name="current round", + ), + ), + migrations.AddField( + model_name="draw", + name="tournament", + field=models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + to="participation.tournament", + verbose_name="tournament", + ), + ), + ] diff --git a/draw/models.py b/draw/models.py index 356f1df..73b5d5b 100644 --- a/draw/models.py +++ b/draw/models.py @@ -15,6 +15,15 @@ class Draw(models.Model): verbose_name=_('tournament'), ) + current_round = models.ForeignKey( + 'Round', + on_delete=models.CASCADE, + null=True, + default=None, + related_name='+', + verbose_name=_('current round'), + ) + class Meta: verbose_name = _('draw') verbose_name_plural = _('draws') @@ -35,6 +44,15 @@ class Round(models.Model): verbose_name=_('number'), ) + current_pool = models.ForeignKey( + 'Pool', + on_delete=models.CASCADE, + null=True, + default=None, + related_name='+', + verbose_name=_('current pool'), + ) + def __str__(self): return self.get_number_display() @@ -59,6 +77,15 @@ class Pool(models.Model): verbose_name=_('letter'), ) + current_team = models.ForeignKey( + 'TeamDraw', + on_delete=models.CASCADE, + null=True, + default=None, + related_name='+', + verbose_name=_('current team'), + ) + def __str__(self): return f"{self.letter}{self.round}" @@ -74,6 +101,17 @@ class TeamDraw(models.Model): verbose_name=_('participation'), ) + pool = models.ForeignKey( + Pool, + on_delete=models.CASCADE, + verbose_name=_('pool'), + ) + + index = models.PositiveSmallIntegerField( + choices=zip(range(1, 6), range(1, 6)), + verbose_name=_('index'), + ) + accepted = models.IntegerField( choices=[ (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1) @@ -83,6 +121,11 @@ class TeamDraw(models.Model): verbose_name=_("accepted problem"), ) + last_dice = models.IntegerField( + choices=zip(range(1, 101), range(1, 101)), + verbose_name=_("last dice"), + ) + purposed = models.IntegerField( choices=[ (i, format_lazy(_("Problem #{problem}"), problem=i)) for i in range(1, settings.PROBLEM_COUNT + 1) @@ -93,7 +136,7 @@ class TeamDraw(models.Model): ) rejected = models.JSONField( - default=[], + default=list, verbose_name=_('rejected problems'), ) diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 0794dcb..7518677 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TFJM\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-22 11:12+0100\n" +"POT-Creation-Date: 2023-03-22 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Emmy D'Anello \n" "Language-Team: LANGUAGE \n" @@ -21,6 +21,103 @@ msgstr "" msgid "API" msgstr "API" +#: draw/apps.py:10 +msgid "Draw" +msgstr "Tirage au sort" + +#: draw/models.py:15 participation/models.py:288 participation/models.py:312 +#: participation/models.py:344 +msgid "tournament" +msgstr "tournoi" + +#: draw/models.py:24 +msgid "current round" +msgstr "tour actuel" + +#: draw/models.py:28 draw/models.py:36 +msgid "draw" +msgstr "tirage au sort" + +#: draw/models.py:29 +msgid "draws" +msgstr "tirages au sort" + +#: draw/models.py:41 +msgid "Round 1" +msgstr "Tour 1" + +#: draw/models.py:42 +msgid "Round 2" +msgstr "Tour 2" + +#: draw/models.py:44 +msgid "number" +msgstr "numéro" + +#: draw/models.py:53 +msgid "current pool" +msgstr "poule actuelle" + +#: draw/models.py:60 participation/models.py:348 +msgid "round" +msgstr "tour" + +#: draw/models.py:61 +msgid "rounds" +msgstr "tours" + +#: draw/models.py:77 +msgid "letter" +msgstr "lettre" + +#: draw/models.py:86 +msgid "current team" +msgstr "équipe actuelle" + +#: draw/models.py:93 draw/models.py:107 participation/models.py:400 +#: participation/models.py:408 +msgid "pool" +msgstr "poule" + +#: draw/models.py:94 participation/models.py:401 +msgid "pools" +msgstr "poules" + +#: draw/models.py:101 participation/models.py:335 participation/models.py:532 +#: participation/models.py:562 participation/models.py:600 +msgid "participation" +msgstr "participation" + +#: draw/models.py:112 +msgid "index" +msgstr "position" + +#: draw/models.py:117 draw/models.py:131 participation/models.py:415 +#: participation/models.py:569 +#, python-brace-format +msgid "Problem #{problem}" +msgstr "Problème n°{problem}" + +#: draw/models.py:121 draw/models.py:135 +msgid "accepted problem" +msgstr "problème accepté" + +#: draw/models.py:126 +msgid "last dice" +msgstr "dernier dé" + +#: draw/models.py:140 +msgid "rejected problems" +msgstr "problèmes rejetés" + +#: draw/models.py:144 +msgid "team draw" +msgstr "tirage d'équipe" + +#: draw/models.py:145 +msgid "team draws" +msgstr "tirages d'équipe" + #: logs/apps.py:11 msgid "Logs" msgstr "Logs" @@ -272,11 +369,6 @@ msgstr "organisateur⋅rices" msgid "final" msgstr "finale" -#: participation/models.py:288 participation/models.py:312 -#: participation/models.py:344 -msgid "tournament" -msgstr "tournoi" - #: participation/models.py:289 msgid "tournaments" msgstr "tournois" @@ -298,19 +390,10 @@ msgstr "L'équipe est sélectionnée pour la finale." msgid "Participation of the team {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})" -#: participation/models.py:335 participation/models.py:532 -#: participation/models.py:562 participation/models.py:600 -msgid "participation" -msgstr "participation" - #: participation/models.py:336 participation/models.py:358 msgid "participations" msgstr "participations" -#: participation/models.py:348 -msgid "round" -msgstr "tour" - #: participation/models.py:350 participation/models.py:351 #, python-brace-format msgid "Round {round}" @@ -346,23 +429,10 @@ msgstr "" msgid "Pool of day {round} for tournament {tournament} with teams {teams}" msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}" -#: participation/models.py:400 participation/models.py:408 -msgid "pool" -msgstr "poule" - -#: participation/models.py:401 -msgid "pools" -msgstr "poules" - #: participation/models.py:413 msgid "defended solution" msgstr "solution défendue" -#: participation/models.py:415 participation/models.py:569 -#, python-brace-format -msgid "Problem #{problem}" -msgstr "Problème n°{problem}" - #: participation/models.py:422 participation/tables.py:102 msgid "defender" msgstr "défenseur" @@ -1867,11 +1937,11 @@ msgstr "Autorisation parentale de {student}.{ext}" msgid "Scholarship attestation of {user}.{ext}" msgstr "Notification de bourse de {user}.{ext}" -#: tfjm/settings.py:159 +#: tfjm/settings.py:164 msgid "English" msgstr "Anglais" -#: tfjm/settings.py:160 +#: tfjm/settings.py:165 msgid "French" msgstr "Français"