Fix buttons for third round

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello 2024-07-06 10:16:54 +02:00
parent 2e99b3ea8e
commit 40db20a471
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
5 changed files with 198 additions and 164 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-05 16:44+0200\n"
"POT-Creation-Date: 2024-07-06 10:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -78,8 +78,8 @@ msgstr "Type de permission nécessaire pour écrire un message dans un canal."
#: chat/models.py:62 draw/admin.py:53 draw/admin.py:71 draw/admin.py:88
#: draw/models.py:27 participation/admin.py:79 participation/admin.py:144
#: participation/admin.py:176 participation/models.py:781
#: participation/models.py:805 participation/models.py:1114
#: participation/admin.py:176 participation/models.py:783
#: participation/models.py:807 participation/models.py:1116
#: registration/models.py:763
#: registration/templates/registration/payment_form.html:53
msgid "tournament"
@ -95,7 +95,7 @@ msgstr ""
#: chat/models.py:73 draw/models.py:446 draw/models.py:473
#: participation/admin.py:140 participation/admin.py:160
#: participation/models.py:1642 participation/models.py:1651
#: participation/models.py:1651 participation/models.py:1660
#: participation/tables.py:84
msgid "pool"
msgstr "poule"
@ -109,7 +109,7 @@ msgstr ""
#: chat/models.py:84 draw/templates/draw/tournament_content.html:277
#: participation/admin.py:172 participation/models.py:261
#: participation/models.py:796
#: participation/models.py:798
#: participation/templates/participation/tournament_harmonize.html:15
#: registration/models.py:158 registration/models.py:754
#: registration/tables.py:39
@ -265,7 +265,7 @@ msgid "teams"
msgstr "équipes"
#: draw/admin.py:92 draw/models.py:245 draw/models.py:465
#: participation/models.py:1118
#: participation/models.py:1120
msgid "round"
msgstr "tour"
@ -634,7 +634,7 @@ msgstr "Le numéro du tour doit être entre 1 et {nb}."
msgid "rounds"
msgstr "tours"
#: draw/models.py:268 participation/models.py:1126
#: draw/models.py:268 participation/models.py:1128
msgid "letter"
msgstr "lettre"
@ -672,12 +672,12 @@ msgstr "L'instance complète de la poule."
msgid "Pool {letter}{number}"
msgstr "Poule {letter}{number}"
#: draw/models.py:447 participation/models.py:1643
#: draw/models.py:447 participation/models.py:1652
msgid "pools"
msgstr "poules"
#: draw/models.py:459 participation/models.py:1104 participation/models.py:1862
#: participation/models.py:1892 participation/models.py:1934
#: draw/models.py:459 participation/models.py:1106 participation/models.py:1871
#: participation/models.py:1901 participation/models.py:1943
msgid "participation"
msgstr "participation"
@ -701,9 +701,9 @@ msgid ""
msgstr ""
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1."
#: draw/models.py:496 draw/models.py:519 participation/models.py:1234
#: participation/models.py:1665 participation/models.py:1899
#: participation/views.py:1487 participation/views.py:1752
#: draw/models.py:496 draw/models.py:519 participation/models.py:1237
#: participation/models.py:1674 participation/models.py:1908
#: participation/views.py:1489 participation/views.py:1754
#, python-brace-format
msgid "Problem #{problem}"
msgstr "Problème n°{problem}"
@ -914,31 +914,31 @@ msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}"
msgid "valid"
msgstr "valide"
#: participation/admin.py:87 participation/models.py:817
#: participation/admin.py:87 participation/models.py:819
msgid "selected for final"
msgstr "sélectionnée pour la finale"
#: participation/admin.py:124 participation/admin.py:188
#: participation/models.py:1672 participation/tables.py:114
#: participation/models.py:1681 participation/tables.py:114
msgid "defender"
msgstr "défenseur⋅se"
#: participation/admin.py:128 participation/models.py:1679
#: participation/models.py:1946
#: participation/admin.py:128 participation/models.py:1688
#: participation/models.py:1955
msgid "opponent"
msgstr "opposant⋅e"
#: participation/admin.py:132 participation/models.py:1686
#: participation/models.py:1947
#: participation/admin.py:132 participation/models.py:1695
#: participation/models.py:1956
msgid "reviewer"
msgstr "rapporteur⋅rice"
#: participation/admin.py:136 participation/models.py:1693
#: participation/models.py:1948
#: participation/admin.py:136 participation/models.py:1702
#: participation/models.py:1957
msgid "observer"
msgstr "observateur⋅rice"
#: participation/admin.py:192 participation/models.py:1897
#: participation/admin.py:192 participation/models.py:1906
msgid "problem"
msgstr "numéro de problème"
@ -1289,12 +1289,12 @@ msgid "Google Sheet ID"
msgstr "ID de la feuille Google Sheets"
#: participation/models.py:473 participation/models.py:474
#: participation/models.py:476 participation/models.py:714
#: participation/models.py:476 participation/models.py:716
msgid "Final ranking"
msgstr "Classement final"
#: participation/models.py:481 participation/models.py:551
#: participation/models.py:1309 participation/views.py:1726
#: participation/models.py:481 participation/models.py:553
#: participation/models.py:1312 participation/views.py:1728
msgid "Team"
msgstr "Équipe"
@ -1306,82 +1306,82 @@ msgstr "Scores jour 1"
msgid "Tweaks day 1"
msgstr "Ajustements 1"
#: participation/models.py:481
#: participation/models.py:482
msgid "Scores day 2"
msgstr "Scores jour 2"
#: participation/models.py:481
#: participation/models.py:482
msgid "Tweaks day 2"
msgstr "Ajustements 2"
#: participation/models.py:482
#: participation/models.py:483
msgid "Total D1 + D2"
msgstr "Total J1 + J2"
#: participation/models.py:482
#: participation/models.py:483
msgid "Scores day 3"
msgstr "Scores jour 3"
#: participation/models.py:482
#: participation/models.py:483
msgid "Tweaks day 3"
msgstr "Ajustements 3"
#: participation/models.py:484 participation/models.py:1309
#: participation/views.py:1733
#: participation/models.py:485 participation/models.py:1312
#: participation/views.py:1735
msgid "Total"
msgstr "Total"
#: participation/models.py:484 participation/models.py:551
#: participation/models.py:1309
#: participation/models.py:485 participation/models.py:553
#: participation/models.py:1312
#: participation/templates/participation/tournament_harmonize.html:14
#: participation/views.py:1736
#: participation/views.py:1738
msgid "Rank"
msgstr "Rang"
#: participation/models.py:551 participation/models.py:716
#: participation/models.py:553 participation/models.py:718
msgid "Score"
msgstr "Score"
#: participation/models.py:551
#: participation/models.py:553
msgid "Mention"
msgstr "Mention"
#: participation/models.py:696 participation/models.py:1572
#: participation/models.py:698 participation/models.py:1581
msgid "Don't update the table structure for a better automated integration."
msgstr ""
"Ne pas mettre à jour la structure de la table pour une meilleure intégration "
"automatisée."
#: participation/models.py:782 registration/admin.py:125
#: participation/models.py:784 registration/admin.py:125
msgid "tournaments"
msgstr "tournois"
#: participation/models.py:811
#: participation/models.py:813
msgid "valid team"
msgstr "équipe valide"
#: participation/models.py:812
#: participation/models.py:814
msgid "The participation got the validation of the organizers."
msgstr "La participation a été validée par les organisateur⋅rices."
#: participation/models.py:818
#: participation/models.py:820
msgid "The team is selected for the final tournament."
msgstr "L'équipe est sélectionnée pour la finale."
#: participation/models.py:822
#: participation/models.py:824
msgid "mention"
msgstr "mention"
#: participation/models.py:829
#: participation/models.py:831
msgid "mention (final)"
msgstr "Mention (pour la finale) :"
#: participation/models.py:839
#: participation/models.py:841
#, python-brace-format
msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})"
#: participation/models.py:846
#: participation/models.py:848
#, python-brace-format
msgid ""
"<p>The team {trigram} has {nb_missing_payments} missing payments. Each "
@ -1394,11 +1394,11 @@ msgstr ""
"notification de bourse) pour participer au tournoi.</p><p>Les participant⋅es "
"qui n'ont pas encore payé sont : {participants}.</p>"
#: participation/models.py:854
#: participation/models.py:856
msgid "Missing payments"
msgstr "Paiements manquants"
#: participation/models.py:871
#: participation/models.py:873
msgid ""
"<p>The solutions for the tournament of {tournament} are due on the {date:%Y-"
"%m-%d %H:%M}.</p><p>You have currently sent <strong>{nb_solutions}</strong> "
@ -1413,11 +1413,11 @@ msgstr ""
"pouvez envoyer vos solutions sur <a href='{url}'>votre page de "
"participation</a>.</p>"
#: participation/models.py:881 participation/models.py:895
#: participation/models.py:883 participation/models.py:897
msgid "Solutions due"
msgstr "Rendu des solutions"
#: participation/models.py:887
#: participation/models.py:889
msgid ""
"<p>The solutions for the tournament of {tournament} are due on the {date:%Y-"
"%m-%d %H:%M}.</p><p>Remember that you can only fix minor changes to your "
@ -1430,7 +1430,7 @@ msgstr ""
"parties.</p><p>Vous pouvez envoyer vos solutions sur <a href='{url}'>votre "
"page de participation</a>.</p>"
#: participation/models.py:901 registration/models.py:607
#: participation/models.py:903 registration/models.py:607
msgid ""
"<p>The draw of the solutions for the tournament {tournament} is planned on "
"the {date:%Y-%m-%d %H:%M}. You can join it on <a href='{url}'>this link</a>."
@ -1440,11 +1440,11 @@ msgstr ""
"{date:%d/%m/%Y %H:%M}. Vous pouvez y participer sur <a href='{url}'>ce lien</"
"a>.</p>"
#: participation/models.py:907 registration/models.py:614
#: participation/models.py:909 registration/models.py:614
msgid "Draw of solutions"
msgstr "Tirage au sort des solutions"
#: participation/models.py:919
#: participation/models.py:921
#, python-brace-format
msgid ""
"<p>The solutions draw is ended. You can check the result on <a "
@ -1456,8 +1456,8 @@ msgstr ""
"tour, vous défendrez <a href='{solution_url}'>votre solution du problème "
"{problem}</a>.</p>"
#: participation/models.py:928 participation/models.py:986
#: participation/models.py:1045
#: participation/models.py:930 participation/models.py:988
#: participation/models.py:1047
#, python-brace-format
msgid ""
"<p>You will oppose the solution of the team {opponent} on the <a "
@ -1468,8 +1468,8 @@ msgstr ""
"href='{solution_url}'>problème {problem}</a>. Vous pouvez envoyer votre note "
"de synthèse sur <a href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:937 participation/models.py:995
#: participation/models.py:1054
#: participation/models.py:939 participation/models.py:997
#: participation/models.py:1056
#, python-brace-format
msgid ""
"<p>You will report the solution of the team {reviewer} on the <a "
@ -1480,8 +1480,8 @@ msgstr ""
"href='{solution_url}'>problème {problem}</a>. Vous pouvez envoyer votre note "
"de synthèse sur <a href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:947 participation/models.py:1005
#: participation/models.py:1064
#: participation/models.py:949 participation/models.py:1007
#: participation/models.py:1066
#, python-brace-format
msgid ""
"<p>You will observe the solution of the team {observer} on the <a "
@ -1492,11 +1492,11 @@ msgstr ""
"href='{solution_url}'>problème {problem}</a>. Vous pouvez envoyer votre note "
"de synthèse sur <a href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:967 registration/models.py:629
#: participation/models.py:969 registration/models.py:629
msgid "First round"
msgstr "Premier tour"
#: participation/models.py:979
#: participation/models.py:981
#, python-brace-format
msgid ""
"<p>For the second round, you will defend <a href='{solution_url}'>your "
@ -1505,12 +1505,12 @@ msgstr ""
"<p>Pour le second tour, vous défendrez <a href='{solution_url}'>votre "
"solution du problème {problem}</a>.</p>"
#: participation/models.py:1025 participation/models.py:1084
#: participation/models.py:1027 participation/models.py:1086
#: registration/models.py:640
msgid "Second round"
msgstr "Second tour"
#: participation/models.py:1038
#: participation/models.py:1040
#, python-brace-format
msgid ""
"<p>For the third round, you will defend <a href='{solution_url}'>your "
@ -1519,7 +1519,7 @@ msgstr ""
"<p>Pour le troisième tour, vous défendrez <a href='{solution_url}'>votre "
"solution du problème {problem}</a>.</p>"
#: participation/models.py:1090
#: participation/models.py:1092
#, python-brace-format
msgid ""
"<p>The tournament {tournament} is ended. You can check the results on the <a "
@ -1528,57 +1528,57 @@ msgstr ""
"<p>Le tournoi {tournament} est terminé. Vous pouvez consulter les résultats "
"sur la <a href='{url}'>page du tournoi</a>.</p>"
#: participation/models.py:1095
#: participation/models.py:1097
msgid "Tournament ended"
msgstr "Tournoi terminé"
#: participation/models.py:1105 participation/models.py:1148
#: participation/models.py:1107 participation/models.py:1150
msgid "participations"
msgstr "participations"
#: participation/models.py:1120 participation/models.py:1121
#: participation/models.py:1122
#: participation/models.py:1122 participation/models.py:1123
#: participation/models.py:1124
#, python-brace-format
msgid "Round {round}"
msgstr "Tour {round}"
#: participation/models.py:1136
#: participation/models.py:1138
msgid "room"
msgstr "salle"
#: participation/models.py:1138
#: participation/models.py:1140
msgid "Room 1"
msgstr "Salle 1"
#: participation/models.py:1139
#: participation/models.py:1141
msgid "Room 2"
msgstr "Salle 2"
#: participation/models.py:1142
#: participation/models.py:1144
msgid "For 5-teams pools only"
msgstr "Pour les poules de 5 équipe uniquement"
#: participation/models.py:1154
#: participation/models.py:1156
msgid "juries"
msgstr "jurys"
#: participation/models.py:1163
#: participation/models.py:1165
msgid "president of the jury"
msgstr "président⋅e du jury"
#: participation/models.py:1170
#: participation/models.py:1172
msgid "BigBlueButton URL"
msgstr "Lien BigBlueButton"
#: participation/models.py:1171
#: participation/models.py:1173
msgid "The link of the BBB visio for this pool."
msgstr "Le lien du salon BBB pour cette poule."
#: participation/models.py:1176
#: participation/models.py:1178
msgid "results available"
msgstr "résultats disponibles"
#: participation/models.py:1177
#: participation/models.py:1179
msgid ""
"Check this case when results become accessible to teams. They stay "
"accessible to you. Only averages are given."
@ -1587,61 +1587,65 @@ msgstr ""
"Ils restent toujours accessibles pour vous. Seules les moyennes sont "
"communiquées."
#: participation/models.py:1209
#: participation/models.py:1211
msgid "The president of the jury must be part of the jury."
msgstr "Læ président⋅e du jury doit faire partie du jury."
#: participation/models.py:1235 participation/models.py:1309
#: participation/views.py:1481 participation/views.py:1730
#: participation/models.py:1238 participation/models.py:1312
#: participation/views.py:1483 participation/views.py:1732
msgid "Problem"
msgstr "Problème"
#: participation/models.py:1245 participation/views.py:1530
#: participation/views.py:1531
#: participation/models.py:1243 participation/views.py:1498
msgid "Role"
msgstr "Rôle"
#: participation/models.py:1248 participation/views.py:1532
#: participation/views.py:1533
msgid "Juree"
msgstr "Juré⋅e"
#: participation/models.py:1268 participation/models.py:1588
#: participation/models.py:1610 participation/views.py:1600
#: participation/models.py:1271 participation/models.py:1597
#: participation/models.py:1619 participation/views.py:1602
msgid "Average"
msgstr "Moyenne"
#: participation/models.py:1274 participation/views.py:1619
#: participation/models.py:1277 participation/views.py:1621
msgid "Coefficient"
msgstr "Coefficien"
#: participation/models.py:1275 participation/views.py:1662
#: participation/models.py:1278 participation/views.py:1664
msgid "Subtotal"
msgstr "Sous-total"
#: participation/models.py:1535
#: participation/models.py:1544
#, python-brace-format
msgid "Input must be a valid integer between {min_note} and {max_note}."
msgstr "L'entrée doit être un entier valide entre {min_note} et {max_note}."
#: participation/models.py:1623
#: participation/models.py:1632
#, python-brace-format
msgid "The jury {jury} is not part of the jury for this pool."
msgstr "{jury} ne fait pas partie du jury pour cette poule."
#: participation/models.py:1636
#: participation/models.py:1645
#, python-brace-format
msgid "Pool {code} for tournament {tournament} with teams {teams}"
msgstr "Poule {code} du tournoi {tournament} avec les équipes {teams}"
#: participation/models.py:1656
#: participation/models.py:1665
msgid "position"
msgstr "position"
#: participation/models.py:1663
#: participation/models.py:1672
msgid "defended solution"
msgstr "solution défendue"
#: participation/models.py:1701
#: participation/models.py:1710
msgid "penalties"
msgstr "pénalités"
#: participation/models.py:1703
#: participation/models.py:1712
msgid ""
"Number of penalties for the defender. The defender will loose a 0.5 "
"coefficient per penalty."
@ -1649,128 +1653,128 @@ msgstr ""
"Nombre de pénalités pour l'équipe défenseuse. Elle perd un coefficient 0.5 "
"sur sa présentation orale par pénalité."
#: participation/models.py:1829 participation/models.py:1832
#: participation/models.py:1835 participation/models.py:1838
#: participation/models.py:1838 participation/models.py:1841
#: participation/models.py:1844 participation/models.py:1847
#, python-brace-format
msgid "Team {trigram} is not registered in the pool."
msgstr "L'équipe {trigram} n'est pas inscrite dans la poule."
#: participation/models.py:1843
#: participation/models.py:1852
#, python-brace-format
msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}"
#: participation/models.py:1847 participation/models.py:1856
#: participation/models.py:1941 participation/models.py:1984
#: participation/models.py:1856 participation/models.py:1865
#: participation/models.py:1950 participation/models.py:1993
msgid "passage"
msgstr "passage"
#: participation/models.py:1848
#: participation/models.py:1857
msgid "passages"
msgstr "passages"
#: participation/models.py:1867
#: participation/models.py:1876
msgid "difference"
msgstr "différence"
#: participation/models.py:1868
#: participation/models.py:1877
msgid "Score to add/remove on the final score"
msgstr "Score à ajouter/retrancher au score final"
#: participation/models.py:1875
#: participation/models.py:1884
msgid "tweak"
msgstr "harmonisation"
#: participation/models.py:1876
#: participation/models.py:1885
msgid "tweaks"
msgstr "harmonisations"
#: participation/models.py:1904
#: participation/models.py:1913
msgid "solution for the final tournament"
msgstr "solution pour la finale"
#: participation/models.py:1909 participation/models.py:1953
#: participation/models.py:1918 participation/models.py:1962
msgid "file"
msgstr "fichier"
#: participation/models.py:1919
#: participation/models.py:1928
#, python-brace-format
msgid "Solution of team {team} for problem {problem}"
msgstr "Solution de l'équipe {team} pour le problème {problem}"
#: participation/models.py:1921
#: participation/models.py:1930
msgid "for final"
msgstr "pour la finale"
#: participation/models.py:1924
#: participation/models.py:1933
msgid "solution"
msgstr "solution"
#: participation/models.py:1925
#: participation/models.py:1934
msgid "solutions"
msgstr "solutions"
#: participation/models.py:1959
#: participation/models.py:1968
#, python-brace-format
msgid "Synthesis of {team} as {type} for problem {problem} of {defender}"
msgstr ""
"Note de synthèse de l'équipe {team} en tant que {type} pour le problème "
"{problem} de {defender}"
#: participation/models.py:1967
#: participation/models.py:1976
msgid "synthesis"
msgstr "note de synthèse"
#: participation/models.py:1968
#: participation/models.py:1977
msgid "syntheses"
msgstr "notes de synthèse"
#: participation/models.py:1977
#: participation/models.py:1986
msgid "jury"
msgstr "jury"
#: participation/models.py:1989
#: participation/models.py:1998
msgid "defender writing note"
msgstr "note d'écrit défenseur⋅se"
#: participation/models.py:1995
#: participation/models.py:2004
msgid "defender oral note"
msgstr "note d'oral défenseur⋅se"
#: participation/models.py:2001
#: participation/models.py:2010
msgid "opponent writing note"
msgstr "note d'écrit opposant⋅e"
#: participation/models.py:2007
#: participation/models.py:2016
msgid "opponent oral note"
msgstr "note d'oral opposant⋅e"
#: participation/models.py:2013
#: participation/models.py:2022
msgid "reviewer writing note"
msgstr "note d'écrit rapporteur⋅rice"
#: participation/models.py:2019
#: participation/models.py:2028
msgid "reviewer oral note"
msgstr "note d'oral du rapporteur⋅rice"
#: participation/models.py:2025
#: participation/models.py:2034
msgid "observer writing note"
msgstr "note d'écrit de l'observateur⋅rice"
#: participation/models.py:2031
#: participation/models.py:2040
msgid "observer oral note"
msgstr "note d'oral de l'observateur⋅rice"
#: participation/models.py:2096
#: participation/models.py:2105
#, python-brace-format
msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}"
#: participation/models.py:2099
#: participation/models.py:2108
msgid "note"
msgstr "note"
#: participation/models.py:2100
#: participation/models.py:2109
msgid "notes"
msgstr "notes"
@ -2420,31 +2424,41 @@ msgstr "Sélectionner pour la finale"
#: participation/templates/participation/tournament_detail.html:148
#: participation/templates/participation/tournament_detail.html:152
#: participation/templates/participation/tournament_detail.html:157
msgid "Harmonize"
msgstr "Harmoniser"
#: participation/templates/participation/tournament_detail.html:148
#: participation/templates/participation/tournament_detail.html:152
#: participation/templates/participation/tournament_detail.html:157
msgid "Day"
msgstr "Jour"
#: participation/templates/participation/tournament_detail.html:161
#: participation/templates/participation/tournament_detail.html:167
msgid "Publish notes for first round"
msgstr "Publier les notes pour le premier tour"
#: participation/templates/participation/tournament_detail.html:166
#: participation/templates/participation/tournament_detail.html:172
msgid "Unpublish notes for first round"
msgstr "Dépublier les notes pour le premier tour"
#: participation/templates/participation/tournament_detail.html:172
#: participation/templates/participation/tournament_detail.html:178
msgid "Publish notes for second round"
msgstr "Publier les notes pour le second tour"
#: participation/templates/participation/tournament_detail.html:177
#: participation/templates/participation/tournament_detail.html:183
msgid "Unpublish notes for second round"
msgstr "Dépublier les notes pour le second tour"
#: participation/templates/participation/tournament_detail.html:189
#: participation/templates/participation/tournament_detail.html:190
msgid "Publish notes for third round"
msgstr "Publier les notes pour le troisième tour"
#: participation/templates/participation/tournament_detail.html:195
msgid "Unpublish notes for third round"
msgstr "Dépublier les notes pour le troisième tour"
#: participation/templates/participation/tournament_detail.html:208
msgid "Files available for download"
msgstr "Fichiers disponibles au téléchargement"
@ -2615,126 +2629,122 @@ msgstr "L'équipe n'est pas encore validée."
msgid "Participation of team {trigram}"
msgstr "Participation de l'équipe {trigram}"
#: participation/views.py:654
#: participation/views.py:655
#, python-brace-format
msgid "Payments of {tournament}"
msgstr "Paiements de {tournament}"
#: participation/views.py:754
#: participation/views.py:755
msgid "Notes published!"
msgstr "Notes publiées !"
#: participation/views.py:756
#: participation/views.py:757
msgid "Notes hidden!"
msgstr "Notes dissimulées !"
#: participation/views.py:787
#: participation/views.py:788
#, python-brace-format
msgid "Harmonize notes of {tournament} - Day {round}"
msgstr "Harmoniser les notes de {tournament} - Jour {round}"
#: participation/views.py:900
#: participation/views.py:902
msgid "You can't upload a solution after the deadline."
msgstr "Vous ne pouvez pas envoyer de solution après la date limite."
#: participation/views.py:1020
#: participation/views.py:1022
#, python-brace-format
msgid "Solutions of team {trigram}.zip"
msgstr "Solutions de l'équipe {trigram}.zip"
#: participation/views.py:1020
#: participation/views.py:1022
#, python-brace-format
msgid "Syntheses of team {trigram}.zip"
msgstr "Notes de synthèse de l'équipe {trigram}.zip"
#: participation/views.py:1037 participation/views.py:1052
#: participation/views.py:1039 participation/views.py:1054
#, python-brace-format
msgid "Solutions of {tournament}.zip"
msgstr "Solutions de {tournament}.zip"
#: participation/views.py:1037 participation/views.py:1052
#: participation/views.py:1039 participation/views.py:1054
#, python-brace-format
msgid "Syntheses of {tournament}.zip"
msgstr "Notes de synthèse de {tournament}.zip"
#: participation/views.py:1061
#: participation/views.py:1063
#, python-brace-format
msgid "Solutions for pool {pool} of tournament {tournament}.zip"
msgstr "Solutions pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1062
#: participation/views.py:1064
#, python-brace-format
msgid "Syntheses for pool {pool} of tournament {tournament}.zip"
msgstr "Notes de synthèses pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1104
#: participation/views.py:1106
#, python-brace-format
msgid "Jury of pool {pool} for {tournament} with teams {teams}"
msgstr "Jury de la poule {pool} pour {tournament} avec les équipes {teams}"
#: participation/views.py:1120
#: participation/views.py:1122
#, python-brace-format
msgid "The jury {name} is already in the pool!"
msgstr "{name} est déjà dans la poule !"
#: participation/views.py:1140
#: participation/views.py:1142
msgid "New jury account"
msgstr "Nouveau compte de juré⋅e"
#: participation/views.py:1161
#: participation/views.py:1163
#, python-brace-format
msgid "The jury {name} has been successfully added!"
msgstr "{name} a été ajouté⋅e avec succès en tant que juré⋅e !"
#: participation/views.py:1197
#: participation/views.py:1199
#, python-brace-format
msgid "The jury {name} has been successfully removed!"
msgstr "{name} a été retiré⋅e avec succès du jury !"
#: participation/views.py:1223
#: participation/views.py:1225
#, python-brace-format
msgid "The jury {name} has been successfully promoted president!"
msgstr "{name} a été nommé⋅e président⋅e du jury !"
#: participation/views.py:1251
#: participation/views.py:1253
msgid "The following user is not registered as a jury:"
msgstr "L'utilisateur⋅rice suivant n'est pas inscrit⋅e en tant que juré⋅e :"
#: participation/views.py:1267
#: participation/views.py:1269
msgid "Notes were successfully uploaded."
msgstr "Les notes ont bien été envoyées."
#: participation/views.py:1496
msgid "Role"
msgstr "Rôle"
#: participation/views.py:1502
#: participation/views.py:1504
msgid "Defender"
msgstr "Défenseur⋅se"
#: participation/views.py:1508
#: participation/views.py:1510
msgid "Opponent"
msgstr "Opposant⋅e"
#: participation/views.py:1515
#: participation/views.py:1517
msgid "Reviewer"
msgstr "Rapporteur⋅rice"
#: participation/views.py:1522
#: participation/views.py:1524
msgid "Observer"
msgstr "Observateur⋅rice"
#: participation/views.py:1893
#: participation/views.py:1895
#, python-brace-format
msgid "Notation sheets of pool {pool} of {tournament}.zip"
msgstr "Feuilles de notations pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1898
#: participation/views.py:1900
#, python-brace-format
msgid "Notation sheets of {tournament}.zip"
msgstr "Feuilles de notation de {tournament}.zip"
#: participation/views.py:2065
#: participation/views.py:2067
msgid "You can't upload a synthesis after the deadline."
msgstr "Vous ne pouvez pas envoyer de note de synthèse après la date limite."

View File

@ -151,6 +151,12 @@
<i class="fas fa-ranking-star"></i>
{% trans "Harmonize" %} - {% trans "Day" %} 2
</a>
{% if TFJM.NB_ROUNDS >= 3 %}
<a href="{% url 'participation:tournament_harmonize' pk=tournament.pk round=3 %}" class="btn btn-secondary">
<i class="fas fa-ranking-star"></i>
{% trans "Harmonize" %} - {% trans "Day" %} 3
</a>
{% endif %}
</div>
</div>
<div class="card-footer text-center">
@ -177,6 +183,19 @@
{% trans "Unpublish notes for second round" %}
</a>
{% endif %}
{% if TFJM.NB_ROUNDS >= 3 %}
{% if not available_notes_3 %}
<a href="{% url 'participation:tournament_publish_notes' pk=tournament.pk round=3 %}" class="btn btn-sm btn-info">
<i class="fas fa-eye"></i>
{% trans "Publish notes for third round" %}
</a>
{% else %}
<a href="{% url 'participation:tournament_publish_notes' pk=tournament.pk round=3 %}?hide" class="btn btn-sm btn-danger">
<i class="fas fa-eye-slash"></i>
{% trans "Unpublish notes for third round" %}
</a>
{% endif %}
{% endif %}
</div>
</div>
{% endif %}

View File

@ -626,8 +626,9 @@ class TournamentDetailView(MultiTableMixin, DetailView):
context["notes"] = sorted_notes
context["available_notes_1"] = all(pool.results_available for pool in self.object.pools.filter(round=1).all())
context["available_notes_2"] = all(pool.results_available for pool in self.object.pools.filter(round=2).all())
context["available_notes_3"] = all(pool.results_available for pool in self.object.pools.filter(round=3).all())
if not self.object.final and notes and context["available_notes_2"] \
if settings.HAS_FINAL and not self.object.final and notes and context["available_notes_2"] \
and not self.request.user.is_anonymous and self.request.user.registration.is_volunteer:
context["team_selectable_for_final"] = next(participation for participation, _note in sorted_notes
if not participation.final)
@ -774,7 +775,7 @@ class TournamentHarmonizeView(VolunteerMixin, DetailView):
reg = request.user.registration
if not reg.is_admin and (not reg.is_volunteer or tournament not in reg.organized_tournaments.all()):
return self.handle_no_permission()
if self.kwargs['round'] not in (1, 2):
if self.kwargs['round'] not in range(1, settings.NB_ROUNDS + 1):
raise Http404
return super().dispatch(request, *args, **kwargs)
@ -807,7 +808,8 @@ class TournamentHarmonizeNoteView(VolunteerMixin, DetailView):
reg = request.user.registration
if not reg.is_admin and (not reg.is_volunteer or tournament not in reg.organized_tournaments.all()):
return self.handle_no_permission()
if self.kwargs['round'] not in (1, 2) or self.kwargs['action'] not in ('add', 'remove') \
if self.kwargs['round'] not in range(1, settings.NB_ROUNDS + 1) \
or self.kwargs['action'] not in ('add', 'remove') \
or self.kwargs['trigram'] not in [p.team.trigram
for p in tournament.participations.filter(valid=True).all()]:
raise Http404
@ -829,7 +831,7 @@ class TournamentHarmonizeNoteView(VolunteerMixin, DetailView):
gc = gspread.service_account_from_dict(settings.GOOGLE_SERVICE_CLIENT)
spreadsheet = gc.open_by_key(tournament.notes_sheet_id)
worksheet = spreadsheet.worksheet("Classement final")
column = 3 if kwargs['round'] == 1 else 5
column = 3 if kwargs['round'] == 1 else 5 if kwargs['round'] == 2 else 8
row = worksheet.find(f"{participation.team.name} ({participation.team.trigram})", in_column=1).row
worksheet.update_cell(row, column, new_diff)

View File

@ -10,6 +10,7 @@ def tfjm_context(request):
'TFJM': {
'APP': settings.TFJM_APP,
'APP_NAME': settings.APP_NAME,
'NB_ROUNDS': settings.NB_ROUNDS,
'ML_MANAGEMENT': settings.ML_MANAGEMENT,
'PAYMENT_MANAGEMENT': settings.PAYMENT_MANAGEMENT,
'SINGLE_TOURNAMENT':

View File

@ -351,6 +351,7 @@ if TFJM_APP == "TFJM":
TEAM_CODE_LENGTH = 3
RECOMMENDED_SOLUTIONS_COUNT = 5
NB_ROUNDS = 2
HAS_FINAL = True
ML_MANAGEMENT = True
PAYMENT_MANAGEMENT = True
HEALTH_SHEET_REQUIRED = True
@ -374,6 +375,7 @@ elif TFJM_APP == "ETEAM":
TEAM_CODE_LENGTH = 4
RECOMMENDED_SOLUTIONS_COUNT = 6
NB_ROUNDS = 3
HAS_FINAL = False
ML_MANAGEMENT = False
PAYMENT_MANAGEMENT = False
HEALTH_SHEET_REQUIRED = False