From 40db20a471eb2667f8a7bf1f7e3059aa27e243b4 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Sat, 6 Jul 2024 10:16:54 +0200 Subject: [PATCH] Fix buttons for third round Signed-off-by: Emmy D'Anello --- locale/fr/LC_MESSAGES/django.po | 330 +++++++++--------- .../participation/tournament_detail.html | 19 + participation/views.py | 10 +- tfjm/context_processors.py | 1 + tfjm/settings.py | 2 + 5 files changed, 198 insertions(+), 164 deletions(-) diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index feb21d7..21aa517 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: 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 \n" "Language-Team: LANGUAGE \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 "" "

The team {trigram} has {nb_missing_payments} missing payments. Each " @@ -1394,11 +1394,11 @@ msgstr "" "notification de bourse) pour participer au tournoi.

Les participant⋅es " "qui n'ont pas encore payé sont : {participants}.

" -#: participation/models.py:854 +#: participation/models.py:856 msgid "Missing payments" msgstr "Paiements manquants" -#: participation/models.py:871 +#: participation/models.py:873 msgid "" "

The solutions for the tournament of {tournament} are due on the {date:%Y-" "%m-%d %H:%M}.

You have currently sent {nb_solutions} " @@ -1413,11 +1413,11 @@ msgstr "" "pouvez envoyer vos solutions sur votre page de " "participation.

" -#: 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 "" "

The solutions for the tournament of {tournament} are due on the {date:%Y-" "%m-%d %H:%M}.

Remember that you can only fix minor changes to your " @@ -1430,7 +1430,7 @@ msgstr "" "parties.

Vous pouvez envoyer vos solutions sur votre " "page de participation.

" -#: participation/models.py:901 registration/models.py:607 +#: participation/models.py:903 registration/models.py:607 msgid "" "

The draw of the solutions for the tournament {tournament} is planned on " "the {date:%Y-%m-%d %H:%M}. You can join it on this link." @@ -1440,11 +1440,11 @@ msgstr "" "{date:%d/%m/%Y %H:%M}. Vous pouvez y participer sur ce lien.

" -#: 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 "" "

The solutions draw is ended. You can check the result on votre solution du problème " "{problem}.

" -#: 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 "" "

You will oppose the solution of the team {opponent} on the problème {problem}. Vous pouvez envoyer votre note " "de synthèse sur cette page.

" -#: 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 "" "

You will report the solution of the team {reviewer} on the problème {problem}. Vous pouvez envoyer votre note " "de synthèse sur cette page.

" -#: 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 "" "

You will observe the solution of the team {observer} on the problème {problem}. Vous pouvez envoyer votre note " "de synthèse sur cette page.

" -#: 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 "" "

For the second round, you will defend your " @@ -1505,12 +1505,12 @@ msgstr "" "

Pour le second tour, vous défendrez votre " "solution du problème {problem}.

" -#: 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 "" "

For the third round, you will defend your " @@ -1519,7 +1519,7 @@ msgstr "" "

Pour le troisième tour, vous défendrez votre " "solution du problème {problem}.

" -#: participation/models.py:1090 +#: participation/models.py:1092 #, python-brace-format msgid "" "

The tournament {tournament} is ended. You can check the results on the Le tournoi {tournament} est terminé. Vous pouvez consulter les résultats " "sur la page du tournoi.

" -#: 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." diff --git a/participation/templates/participation/tournament_detail.html b/participation/templates/participation/tournament_detail.html index ee9c201..a6ef096 100644 --- a/participation/templates/participation/tournament_detail.html +++ b/participation/templates/participation/tournament_detail.html @@ -151,6 +151,12 @@ {% trans "Harmonize" %} - {% trans "Day" %} 2 + {% if TFJM.NB_ROUNDS >= 3 %} + + + {% trans "Harmonize" %} - {% trans "Day" %} 3 + + {% endif %} {% endif %} diff --git a/participation/views.py b/participation/views.py index ca17546..8a3b4f4 100644 --- a/participation/views.py +++ b/participation/views.py @@ -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) diff --git a/tfjm/context_processors.py b/tfjm/context_processors.py index 2bb128e..6046b85 100644 --- a/tfjm/context_processors.py +++ b/tfjm/context_processors.py @@ -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': diff --git a/tfjm/settings.py b/tfjm/settings.py index 14cf079..e20caf2 100644 --- a/tfjm/settings.py +++ b/tfjm/settings.py @@ -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