diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 895a034..07d4dbe 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-03-31 22:09+0200\n"
+"POT-Creation-Date: 2024-04-03 23:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emmy D'Anello \n"
"Language-Team: LANGUAGE \n"
@@ -22,22 +22,22 @@ msgid "API"
msgstr "API"
#: draw/admin.py:39 draw/admin.py:57 draw/admin.py:75
-#: participation/admin.py:109 participation/models.py:252
+#: participation/admin.py:109 participation/models.py:253
#: participation/tables.py:88
msgid "teams"
msgstr "équipes"
#: draw/admin.py:53 draw/admin.py:71 draw/admin.py:88 draw/models.py:26
#: participation/admin.py:79 participation/admin.py:140
-#: participation/admin.py:171 participation/models.py:647
-#: participation/models.py:671 participation/models.py:829
-#: registration/models.py:671
+#: participation/admin.py:171 participation/models.py:648
+#: participation/models.py:672 participation/models.py:831
+#: registration/models.py:673
#: registration/templates/registration/payment_form.html:53
msgid "tournament"
msgstr "tournoi"
#: draw/admin.py:92 draw/models.py:234 draw/models.py:433
-#: participation/models.py:833
+#: participation/models.py:835
msgid "round"
msgstr "tour"
@@ -175,7 +175,7 @@ msgstr "La poule en cours, où les équipes choisissent leurs problèmes"
msgid "rounds"
msgstr "tours"
-#: draw/models.py:257 participation/models.py:847
+#: draw/models.py:257 participation/models.py:849
msgid "letter"
msgstr "lettre"
@@ -214,17 +214,17 @@ msgid "Pool {letter}{number}"
msgstr "Poule {letter}{number}"
#: draw/models.py:414 draw/models.py:441 participation/admin.py:136
-#: participation/admin.py:155 participation/models.py:1316
-#: participation/models.py:1325 participation/tables.py:84
+#: participation/admin.py:155 participation/models.py:1318
+#: participation/models.py:1327 participation/tables.py:84
msgid "pool"
msgstr "poule"
-#: draw/models.py:415 participation/models.py:1317
+#: draw/models.py:415 participation/models.py:1319
msgid "pools"
msgstr "poules"
-#: draw/models.py:427 participation/models.py:819 participation/models.py:1486
-#: participation/models.py:1516 participation/models.py:1558
+#: draw/models.py:427 participation/models.py:821 participation/models.py:1488
+#: participation/models.py:1518 participation/models.py:1560
msgid "participation"
msgstr "participation"
@@ -248,8 +248,8 @@ msgid ""
msgstr ""
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1."
-#: draw/models.py:464 draw/models.py:487 participation/models.py:1339
-#: participation/models.py:1523
+#: draw/models.py:464 draw/models.py:487 participation/models.py:1341
+#: participation/models.py:1525
#, python-brace-format
msgid "Problem #{problem}"
msgstr "Problème n°{problem}"
@@ -332,9 +332,9 @@ msgid "Continue draw"
msgstr "Continuer le tirage"
#: draw/templates/draw/tournament_content.html:216 participation/admin.py:167
-#: participation/models.py:251 participation/models.py:662
+#: participation/models.py:252 participation/models.py:663
#: participation/templates/participation/tournament_harmonize.html:15
-#: registration/models.py:156 registration/models.py:662
+#: registration/models.py:157 registration/models.py:664
#: registration/tables.py:39
#: registration/templates/registration/payment_form.html:52
msgid "team"
@@ -387,7 +387,7 @@ msgstr "Vous n'êtes pas dans une équipe."
msgid "Logs"
msgstr "Logs"
-#: logs/models.py:22 registration/models.py:33
+#: logs/models.py:22 registration/models.py:34
msgid "user"
msgstr "utilisateur"
@@ -452,26 +452,26 @@ msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}"
msgid "valid"
msgstr "valide"
-#: participation/admin.py:87 participation/models.py:683
+#: participation/admin.py:87 participation/models.py:684
msgid "selected for final"
msgstr "sélectionnée pour la finale"
#: participation/admin.py:124 participation/admin.py:183
-#: participation/models.py:1346 participation/tables.py:112
+#: participation/models.py:1348 participation/tables.py:112
msgid "defender"
msgstr "défenseur⋅se"
-#: participation/admin.py:128 participation/models.py:1353
-#: participation/models.py:1570
+#: participation/admin.py:128 participation/models.py:1355
+#: participation/models.py:1572
msgid "opponent"
msgstr "opposant⋅e"
-#: participation/admin.py:132 participation/models.py:1360
-#: participation/models.py:1571
+#: participation/admin.py:132 participation/models.py:1362
+#: participation/models.py:1573
msgid "reporter"
msgstr "rapporteur⋅rice"
-#: participation/admin.py:187 participation/models.py:1521
+#: participation/admin.py:187 participation/models.py:1523
msgid "problem"
msgstr "numéro de problème"
@@ -479,7 +479,7 @@ msgstr "numéro de problème"
msgid "This name is already used."
msgstr "Ce nom est déjà utilisé."
-#: participation/forms.py:37 participation/models.py:41
+#: participation/forms.py:37 participation/models.py:42
msgid "The trigram must be composed of three uppercase letters."
msgstr "Le trigramme doit être composé de trois lettres majuscules."
@@ -576,32 +576,32 @@ msgstr "Ce⋅tte défenseur⋅se ne travaille pas sur ce problème."
msgid "The PDF file must not have more than 2 pages."
msgstr "Le fichier PDF ne doit pas avoir plus de 2 pages."
-#: participation/models.py:34 participation/models.py:262
+#: participation/models.py:35 participation/models.py:263
#: participation/tables.py:18 participation/tables.py:34
msgid "name"
msgstr "nom"
-#: participation/models.py:40 participation/tables.py:39
+#: participation/models.py:41 participation/tables.py:39
msgid "trigram"
msgstr "trigramme"
-#: participation/models.py:46
+#: participation/models.py:47
msgid "This trigram is forbidden."
msgstr "Ce trigramme est interdit."
-#: participation/models.py:52
+#: participation/models.py:53
msgid "access code"
msgstr "code d'accès"
-#: participation/models.py:53
+#: participation/models.py:54
msgid "The access code let other people to join the team."
msgstr "Le code d'accès permet aux autres participants de rejoindre l'équipe."
-#: participation/models.py:57
+#: participation/models.py:58
msgid "motivation letter"
msgstr "lettre de motivation"
-#: participation/models.py:98
+#: participation/models.py:99
#, python-brace-format
msgid ""
"The team {trigram} is not registered to any tournament. You can register the "
@@ -610,11 +610,11 @@ msgstr ""
"L'équipe {trigram} n'est inscrite à aucun tournoi. Vous pouvez inscrire "
"l'équipe à un tournoi en cliquant sur ce lien."
-#: participation/models.py:103
+#: participation/models.py:104
msgid "No tournament"
msgstr "Pas de tournoi"
-#: participation/models.py:109
+#: participation/models.py:110
msgid ""
"Registrations for the tournament of {tournament} are ending on the {date:%Y-"
"%m-%d %H:%M}."
@@ -622,11 +622,11 @@ msgstr ""
"Les inscriptions pour le tournoi de {tournament} se terminent le {date:%d/%m/"
"%Y %H:%M}."
-#: participation/models.py:114
+#: participation/models.py:115
msgid "Registrations closure"
msgstr "Clôture des inscriptions"
-#: participation/models.py:121
+#: participation/models.py:122
#, python-brace-format
msgid ""
"The team {trigram} has not uploaded a motivation letter. You can upload your "
@@ -636,11 +636,11 @@ msgstr ""
"envoyer votre lettre de motivation en cliquant sur ce lien"
"a>."
-#: participation/models.py:126
+#: participation/models.py:127
msgid "No motivation letter"
msgstr "Pas de lettre de motivation"
-#: participation/models.py:135
+#: participation/models.py:136
#, python-brace-format
msgid ""
"The team {trigram} has less than 4 students ({nb_students}). You can invite "
@@ -650,11 +650,11 @@ msgstr ""
"plus d'élèves à rejoindre l'équipe en utilisant le code d'invitation "
"{code}."
-#: participation/models.py:140
+#: participation/models.py:141
msgid "Not enough students"
msgstr "Pas assez d'élèves"
-#: participation/models.py:147
+#: participation/models.py:148
#, python-brace-format
msgid ""
"The team {trigram} has no coach. You can invite a coach to join the team "
@@ -664,11 +664,11 @@ msgstr ""
"encadrant⋅e à rejoindre l'équipe en utilisant le code d'invitation "
"{code}."
-#: participation/models.py:151
+#: participation/models.py:152
msgid "No coach"
msgstr "Pas d'encadrant⋅e"
-#: participation/models.py:158
+#: participation/models.py:159
#, python-brace-format
msgid ""
"The team {trigram} has more than 6 students ({nb_students}) or more than 2 "
@@ -679,11 +679,11 @@ msgstr ""
"encadrant⋅es ({nb_coaches}). Vous devez restreindre le nombre d'élèves et "
"d'encadrant⋅es à 6 et 2, respectivement."
-#: participation/models.py:163
+#: participation/models.py:164
msgid "Too many members"
msgstr "Trop de membres"
-#: participation/models.py:170
+#: participation/models.py:171
#, python-brace-format
msgid ""
"The team {trigram} is ready to be validated. You can request validation on "
@@ -692,11 +692,11 @@ msgstr ""
"L'équipe {trigram} est prête à être validée. Vous pouvez demander la "
"validation sur la page de votre équipe."
-#: participation/models.py:175 participation/models.py:186
+#: participation/models.py:176 participation/models.py:187
msgid "Validate team"
msgstr "Valider l'équipe"
-#: participation/models.py:181
+#: participation/models.py:182
#, python-brace-format
msgid ""
"The team {trigram} has enough participants, but is not ready to be "
@@ -709,7 +709,7 @@ msgstr ""
"documents requis. Pour inviter plus de participant⋅es, utilisez le code "
"d'invitation {code}."
-#: participation/models.py:192
+#: participation/models.py:193
#, python-brace-format
msgid ""
"The team {trigram} has not been validated by the organizers yet. Please be "
@@ -718,107 +718,107 @@ msgstr ""
"L'équipe {trigram} n'a pas encore été validée par les organisateurices. "
"Merci de patienter."
-#: participation/models.py:195 registration/models.py:492
+#: participation/models.py:196 registration/models.py:493
msgid "Pending validation"
msgstr "Validation en attente"
-#: participation/models.py:248
+#: participation/models.py:249
#, python-brace-format
msgid "Team {name} ({trigram})"
msgstr "Équipe {name} ({trigram})"
-#: participation/models.py:267
+#: participation/models.py:268
msgid "start"
msgstr "début"
-#: participation/models.py:272
+#: participation/models.py:273
msgid "end"
msgstr "fin"
-#: participation/models.py:278
+#: participation/models.py:279
#: participation/templates/participation/tournament_detail.html:18
msgid "place"
msgstr "lieu"
-#: participation/models.py:282
+#: participation/models.py:283
msgid "max team count"
msgstr "nombre maximal d'équipes"
-#: participation/models.py:287
+#: participation/models.py:288
#: participation/templates/participation/tournament_detail.html:21
msgid "price"
msgstr "prix"
-#: participation/models.py:292
+#: participation/models.py:293
#: participation/templates/participation/tournament_detail.html:24
msgid "remote"
msgstr "à distance"
-#: participation/models.py:297
+#: participation/models.py:298
msgid "limit date for registrations"
msgstr "date limite d'inscription"
-#: participation/models.py:302
+#: participation/models.py:303
msgid "limit date to upload solutions"
msgstr "date limite pour envoyer les solutions"
-#: participation/models.py:307
+#: participation/models.py:308
msgid "random draw for solutions"
msgstr "tirage au sort des solutions"
-#: participation/models.py:312
+#: participation/models.py:313
msgid "limit date to upload the syntheses for the first phase"
msgstr "date limite pour envoyer les notes de synthèses pour la première phase"
-#: participation/models.py:317
+#: participation/models.py:318
msgid "date when the solutions for the second round become available"
msgstr "date à laquelle les solutions pour le second tour sont accessibles"
-#: participation/models.py:322
+#: participation/models.py:323
msgid "limit date to upload the syntheses for the second phase"
msgstr "date limite d'envoi des notes de synthèse pour la seconde phase"
-#: participation/models.py:327
+#: participation/models.py:328
#: participation/templates/participation/tournament_detail.html:48
msgid "description"
msgstr "description"
-#: participation/models.py:333
+#: participation/models.py:334
#: participation/templates/participation/tournament_detail.html:12
msgid "organizers"
msgstr "organisateur⋅rices"
-#: participation/models.py:338
+#: participation/models.py:339
#: participation/templates/participation/team_detail.html:133
msgid "final"
msgstr "finale"
-#: participation/models.py:346
+#: participation/models.py:347
msgid "Google Sheet ID"
msgstr "ID de la feuille Google Sheets"
-#: participation/models.py:648 registration/admin.py:125
+#: participation/models.py:649 registration/admin.py:125
msgid "tournaments"
msgstr "tournois"
-#: participation/models.py:677
+#: participation/models.py:678
msgid "valid team"
msgstr "équipe valide"
-#: participation/models.py:678
+#: participation/models.py:679
msgid "The participation got the validation of the organizers."
msgstr "La participation a été validée par les organisateur⋅rices."
-#: participation/models.py:684
+#: participation/models.py:685
msgid "The team is selected for the final tournament."
msgstr "L'équipe est sélectionnée pour la finale."
-#: participation/models.py:691
+#: participation/models.py:692
#, python-brace-format
msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})"
-#: participation/models.py:698
+#: participation/models.py:699
#, python-brace-format
msgid ""
"The team {trigram} has {nb_missing_payments} missing payments. Each "
@@ -831,11 +831,11 @@ msgstr ""
"notification de bourse) pour participer au tournoi.
Les participant⋅es "
"qui n'ont pas encore payé sont : {participants}.
"
-#: participation/models.py:706
+#: participation/models.py:707
msgid "Missing payments"
msgstr "Paiements manquants"
-#: participation/models.py:713
+#: participation/models.py:714
msgid ""
"The solutions for the tournament of {tournament} are due on the {date:%Y-"
"%m-%d %H:%M}.
You have currently sent {nb_solutions} "
@@ -850,11 +850,11 @@ msgstr ""
"pouvez envoyer vos solutions sur votre page de "
"participation.
"
-#: participation/models.py:722
+#: participation/models.py:723
msgid "Solutions due"
msgstr "Rendu des solutions"
-#: participation/models.py:728 registration/models.py:517
+#: participation/models.py:729 registration/models.py:518
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."
@@ -864,23 +864,23 @@ msgstr ""
"{date:%d/%m/%Y %H:%M}. Vous pouvez y participer sur ce lien"
"a>.
"
-#: participation/models.py:733 registration/models.py:523
+#: participation/models.py:735 registration/models.py:525
msgid "Draw of solutions"
msgstr "Tirage au sort des solutions"
-#: participation/models.py:744
+#: participation/models.py:746
#, python-brace-format
msgid ""
"The solutions draw is ended. You can check the result on this page.
For the first round, you will defend your solution of the problem {problem}.
"
+"href='{draw_url}'>this page.
For the first round, you will defend "
+"your solution of the problem {problem}.
"
msgstr ""
"Le tirage au sort des solutions est terminé. Vous pouvez consulter les "
-"résultats sur cette page.
Pour le premier tour, "
-"vous défendrez votre solution du problème {problem}"
-".
"
+"résultats sur cette page.Pour le premier "
+"tour, vous défendrez votre solution du problème "
+"{problem}.
"
-#: participation/models.py:753 participation/models.py:785
+#: participation/models.py:755 participation/models.py:787
#, python-brace-format
msgid ""
"You will oppose the solution of the team {opponent} on the problem "
@@ -891,7 +891,7 @@ msgstr ""
"{problem}. Vous pouvez envoyer votre note de synthèse sur cette page.
"
-#: participation/models.py:759 participation/models.py:791
+#: participation/models.py:761 participation/models.py:793
#, python-brace-format
msgid ""
"You will report the solution of the team {reporter} on the problem "
@@ -902,11 +902,11 @@ msgstr ""
"{problem}. Vous pouvez envoyer votre note de synthèse sur cette page.
"
-#: participation/models.py:767 registration/models.py:537
+#: participation/models.py:769 registration/models.py:539
msgid "First round"
msgstr "Premier tour"
-#: participation/models.py:778
+#: participation/models.py:780
#, python-brace-format
msgid ""
"For the second round, you will defend your "
@@ -915,11 +915,11 @@ msgstr ""
"Pour le second tour, vous défendrez votre "
"solution du problème {problem}.
"
-#: participation/models.py:799 registration/models.py:548
+#: participation/models.py:801 registration/models.py:550
msgid "Second round"
msgstr "Second tour"
-#: participation/models.py:805
+#: participation/models.py:807
#, 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:810
+#: participation/models.py:812
msgid "Tournament ended"
msgstr "Tournoi terminé"
-#: participation/models.py:820 participation/models.py:853
+#: participation/models.py:822 participation/models.py:855
msgid "participations"
msgstr "participations"
-#: participation/models.py:835 participation/models.py:836
+#: participation/models.py:837 participation/models.py:838
#, python-brace-format
msgid "Round {round}"
msgstr "Tour {round}"
-#: participation/models.py:859
+#: participation/models.py:861
msgid "juries"
msgstr "jurys"
-#: participation/models.py:868
+#: participation/models.py:870
msgid "president of the jury"
msgstr "président⋅e du jury"
-#: participation/models.py:875
+#: participation/models.py:877
msgid "BigBlueButton URL"
msgstr "Lien BigBlueButton"
-#: participation/models.py:876
+#: participation/models.py:878
msgid "The link of the BBB visio for this pool."
msgstr "Le lien du salon BBB pour cette poule."
-#: participation/models.py:881
+#: participation/models.py:883
msgid "results available"
msgstr "résultats disponibles"
-#: participation/models.py:882
+#: participation/models.py:884
msgid ""
"Check this case when results become accessible to teams. They stay "
"accessible to you. Only averages are given."
@@ -970,37 +970,37 @@ msgstr ""
"Ils restent toujours accessibles pour vous. Seules les moyennes sont "
"communiquées."
-#: participation/models.py:907
+#: participation/models.py:909
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:1299
+#: participation/models.py:1301
#, 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:1310
+#: participation/models.py:1312
#, python-brace-format
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:1330
+#: participation/models.py:1332
msgid "position"
msgstr "position"
-#: participation/models.py:1337
+#: participation/models.py:1339
msgid "defended solution"
msgstr "solution défendue"
-#: participation/models.py:1370
+#: participation/models.py:1372
msgid "observer"
msgstr "observateur⋅rice"
-#: participation/models.py:1375
+#: participation/models.py:1377
msgid "penalties"
msgstr "pénalités"
-#: participation/models.py:1377
+#: participation/models.py:1379
msgid ""
"Number of penalties for the defender. The defender will loose a 0.5 "
"coefficient per penalty."
@@ -1008,124 +1008,124 @@ 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:1453 participation/models.py:1456
-#: participation/models.py:1459 participation/models.py:1462
+#: participation/models.py:1455 participation/models.py:1458
+#: participation/models.py:1461 participation/models.py:1464
#, 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:1467
+#: participation/models.py:1469
#, python-brace-format
msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}"
-#: participation/models.py:1471 participation/models.py:1480
-#: participation/models.py:1565 participation/models.py:1607
+#: participation/models.py:1473 participation/models.py:1482
+#: participation/models.py:1567 participation/models.py:1609
msgid "passage"
msgstr "passage"
-#: participation/models.py:1472
+#: participation/models.py:1474
msgid "passages"
msgstr "passages"
-#: participation/models.py:1491
+#: participation/models.py:1493
msgid "difference"
msgstr "différence"
-#: participation/models.py:1492
+#: participation/models.py:1494
msgid "Score to add/remove on the final score"
msgstr "Score à ajouter/retrancher au score final"
-#: participation/models.py:1499
+#: participation/models.py:1501
msgid "tweak"
msgstr "harmonisation"
-#: participation/models.py:1500
+#: participation/models.py:1502
msgid "tweaks"
msgstr "harmonisations"
-#: participation/models.py:1528
+#: participation/models.py:1530
msgid "solution for the final tournament"
msgstr "solution pour la finale"
-#: participation/models.py:1533 participation/models.py:1576
+#: participation/models.py:1535 participation/models.py:1578
msgid "file"
msgstr "fichier"
-#: participation/models.py:1543
+#: participation/models.py:1545
#, 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:1545
+#: participation/models.py:1547
msgid "for final"
msgstr "pour la finale"
-#: participation/models.py:1548
+#: participation/models.py:1550
msgid "solution"
msgstr "solution"
-#: participation/models.py:1549
+#: participation/models.py:1551
msgid "solutions"
msgstr "solutions"
-#: participation/models.py:1582
+#: participation/models.py:1584
#, 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:1590
+#: participation/models.py:1592
msgid "synthesis"
msgstr "note de synthèse"
-#: participation/models.py:1591
+#: participation/models.py:1593
msgid "syntheses"
msgstr "notes de synthèse"
-#: participation/models.py:1600
+#: participation/models.py:1602
msgid "jury"
msgstr "jury"
-#: participation/models.py:1612
+#: participation/models.py:1614
msgid "defender writing note"
msgstr "note d'écrit défenseur⋅se"
-#: participation/models.py:1618
+#: participation/models.py:1620
msgid "defender oral note"
msgstr "note d'oral défenseur⋅se"
-#: participation/models.py:1624
+#: participation/models.py:1626
msgid "opponent writing note"
msgstr "note d'écrit opposant⋅e"
-#: participation/models.py:1630
+#: participation/models.py:1632
msgid "opponent oral note"
msgstr "note d'oral opposant⋅e"
-#: participation/models.py:1636
+#: participation/models.py:1638
msgid "reporter writing note"
msgstr "note d'écrit rapporteur⋅rice"
-#: participation/models.py:1642
+#: participation/models.py:1644
msgid "reporter oral note"
msgstr "note d'oral du rapporteur⋅rice"
-#: participation/models.py:1648
+#: participation/models.py:1650
msgid "observer note"
msgstr "note de l'observation"
-#: participation/models.py:1709
+#: participation/models.py:1711
#, python-brace-format
msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}"
-#: participation/models.py:1712
+#: participation/models.py:1714
msgid "note"
msgstr "note"
-#: participation/models.py:1713
+#: participation/models.py:1715
msgid "notes"
msgstr "notes"
@@ -1593,7 +1593,7 @@ msgid "Payment of"
msgstr "Paiement de"
#: participation/templates/participation/team_detail.html:132
-#: registration/models.py:592
+#: registration/models.py:594
msgid "grouped"
msgstr "groupé"
@@ -1788,7 +1788,7 @@ msgid "Rank"
msgstr "Rang"
#: participation/templates/participation/tournament_harmonize.html:16
-#: registration/models.py:563
+#: registration/models.py:565
msgid "Note"
msgstr "Note"
@@ -1964,88 +1964,88 @@ msgstr "Notes dissimulées !"
msgid "Harmonize notes of {tournament} - Day {round}"
msgstr "Harmoniser les notes de {tournament} - Jour {round}"
-#: participation/views.py:821
+#: participation/views.py:822
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:938
+#: participation/views.py:939
#, python-brace-format
msgid "Solutions of team {trigram}.zip"
msgstr "Solutions de l'équipe {trigram}.zip"
-#: participation/views.py:938
+#: participation/views.py:939
#, python-brace-format
msgid "Syntheses of team {trigram}.zip"
msgstr "Notes de synthèse de l'équipe {trigram}.zip"
-#: participation/views.py:955 participation/views.py:970
+#: participation/views.py:956 participation/views.py:971
#, python-brace-format
msgid "Solutions of {tournament}.zip"
msgstr "Solutions de {tournament}.zip"
-#: participation/views.py:955 participation/views.py:970
+#: participation/views.py:956 participation/views.py:971
#, python-brace-format
msgid "Syntheses of {tournament}.zip"
msgstr "Notes de synthèse de {tournament}.zip"
-#: participation/views.py:979
+#: participation/views.py:980
#, 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:980
+#: participation/views.py:981
#, 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:1022
+#: participation/views.py:1023
#, 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:1038
+#: participation/views.py:1039
#, python-brace-format
msgid "The jury {name} is already in the pool!"
msgstr "{name} est déjà dans la poule !"
-#: participation/views.py:1058
+#: participation/views.py:1059
msgid "New TFJM² jury account"
msgstr "Nouveau compte de juré⋅e pour le TFJM²"
-#: participation/views.py:1079
+#: participation/views.py:1080
#, 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:1115
+#: participation/views.py:1116
#, 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:1141
+#: participation/views.py:1142
#, 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:1169
+#: participation/views.py:1170
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:1186
+#: participation/views.py:1187
msgid "Notes were successfully uploaded."
msgstr "Les notes ont bien été envoyées."
-#: participation/views.py:1819
+#: participation/views.py:1820
#, 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:1824
+#: participation/views.py:1825
#, python-brace-format
msgid "Notation sheets of {tournament}.zip"
msgstr "Feuilles de notation de {tournament}.zip"
-#: participation/views.py:1974
+#: participation/views.py:1976
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."
@@ -2084,7 +2084,7 @@ msgstr "rôle"
msgid "participant"
msgstr "participant⋅e"
-#: registration/forms.py:25 registration/models.py:426
+#: registration/forms.py:25 registration/models.py:427
msgid "coach"
msgstr "encadrant⋅e"
@@ -2100,20 +2100,20 @@ msgstr "En attente"
msgid "You must upload your receipt."
msgstr "Vous devez envoyer votre justificatif."
-#: registration/models.py:38
+#: registration/models.py:39
msgid "Grant Animath to contact me in the future about other actions"
msgstr ""
"Autoriser Animath à me recontacter à l'avenir à propos d'autres actions"
-#: registration/models.py:43
+#: registration/models.py:44
msgid "email confirmed"
msgstr "email confirmé"
-#: registration/models.py:51
+#: registration/models.py:52
msgid "Activate your TFJM² account"
msgstr "Activez votre compte du TFJM²"
-#: registration/models.py:108
+#: registration/models.py:109
#, python-brace-format
msgid ""
"Your email address is not validated. Please click on the link you received "
@@ -2124,52 +2124,52 @@ msgstr ""
"avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur ce lien."
-#: registration/models.py:128
+#: registration/models.py:129
msgid "registration"
msgstr "inscription"
-#: registration/models.py:129 registration/models.py:588
+#: registration/models.py:130 registration/models.py:590
msgid "registrations"
msgstr "inscriptions"
-#: registration/models.py:161
+#: registration/models.py:162
msgid "gender"
msgstr "genre"
-#: registration/models.py:163
+#: registration/models.py:164
msgid "Female"
msgstr "Femme"
-#: registration/models.py:164
+#: registration/models.py:165
msgid "Male"
msgstr "Homme"
-#: registration/models.py:165
+#: registration/models.py:166
#: registration/templates/registration/payment_form.html:89
msgid "Other"
msgstr "Autre"
-#: registration/models.py:172
+#: registration/models.py:173
msgid "address"
msgstr "adresse"
-#: registration/models.py:176
+#: registration/models.py:177
msgid "zip code"
msgstr "code postal"
-#: registration/models.py:182
+#: registration/models.py:183
msgid "city"
msgstr "ville"
-#: registration/models.py:186
+#: registration/models.py:187
msgid "phone number"
msgstr "numéro de téléphone"
-#: registration/models.py:191
+#: registration/models.py:192
msgid "health issues"
msgstr "problèmes de santé"
-#: registration/models.py:193
+#: registration/models.py:194
msgid ""
"You can indicate here your allergies or anything that is important to know "
"for organizers."
@@ -2177,11 +2177,11 @@ msgstr ""
"Vous pouvez indiquer ici vos allergies ou n'importe quoi qui peut être bon à "
"savoir pour les organisateur⋅rices."
-#: registration/models.py:197
+#: registration/models.py:198
msgid "housing constraints"
msgstr "contraintes de logement"
-#: registration/models.py:199
+#: registration/models.py:200
msgid ""
"You can fill in something here if you have any housing constraints, e.g. "
"medical problems, scheduling issues, gender issues, or anything else you "
@@ -2194,11 +2194,11 @@ msgstr ""
"organisateur⋅rices. Laissez vide si vous n'avez rien de spécifique à "
"déclarer."
-#: registration/models.py:206
+#: registration/models.py:207
msgid "photo authorization"
msgstr "autorisation de droit à l'image"
-#: registration/models.py:235
+#: registration/models.py:236
#, python-brace-format
msgid ""
"You are not in a team. You can create one or ou rejoindre une équipe existante pour "
"participer."
-#: registration/models.py:241
+#: registration/models.py:242
msgid "No team"
msgstr "Pas d'équipe"
-#: registration/models.py:249
+#: registration/models.py:250
#, python-brace-format
msgid ""
"You have not uploaded your photo authorization. You can do it by clicking on "
@@ -2221,71 +2221,71 @@ msgstr ""
"Vous n'avez pas envoyé votre autorisation de droit à l'image. Vous pouvez le "
"faire en cliquant sur ce lien."
-#: registration/models.py:254
+#: registration/models.py:255
msgid "Photo authorization"
msgstr "Autorisation de droit à l'image"
-#: registration/models.py:265
+#: registration/models.py:266
msgid "participant registration"
msgstr "inscription de participant⋅e"
-#: registration/models.py:266
+#: registration/models.py:267
msgid "participant registrations"
msgstr "inscriptions de participant⋅es"
-#: registration/models.py:275
+#: registration/models.py:276
msgid "birth date"
msgstr "date de naissance"
-#: registration/models.py:281
+#: registration/models.py:282
msgid "12th grade"
msgstr "Terminale"
-#: registration/models.py:282
+#: registration/models.py:283
msgid "11th grade"
msgstr "Première"
-#: registration/models.py:283
+#: registration/models.py:284
msgid "10th grade or lower"
msgstr "Seconde ou inférieur"
-#: registration/models.py:285
+#: registration/models.py:286
msgid "student class"
msgstr "classe"
-#: registration/models.py:290
+#: registration/models.py:291
msgid "school"
msgstr "école"
-#: registration/models.py:295
+#: registration/models.py:296
msgid "responsible name"
msgstr "nom d'un⋅e responsable légal⋅e"
-#: registration/models.py:300
+#: registration/models.py:301
msgid "responsible phone number"
msgstr "numéro de téléphone d'un⋅e responsable légal⋅e"
-#: registration/models.py:305
+#: registration/models.py:306
msgid "responsible email address"
msgstr "adresse e-mail d'un⋅e responsable légal⋅e"
-#: registration/models.py:310
+#: registration/models.py:311
msgid "parental authorization"
msgstr "autorisation parentale"
-#: registration/models.py:317
+#: registration/models.py:318
msgid "health sheet"
msgstr "fiche sanitaire"
-#: registration/models.py:324
+#: registration/models.py:325
msgid "vaccine sheet"
msgstr "carnet de vaccination"
-#: registration/models.py:332
+#: registration/models.py:333
msgid "student"
msgstr "élève"
-#: registration/models.py:343
+#: registration/models.py:344
#, python-brace-format
msgid ""
"You have not uploaded your parental authorization. You can do it by clicking "
@@ -2294,11 +2294,11 @@ msgstr ""
"Vous n'avez pas envoyé votre autorisation parentale. Vous pouvez le faire en "
"cliquant sur ce lien."
-#: registration/models.py:348
+#: registration/models.py:349
msgid "Parental authorization"
msgstr "Autorisation parentale"
-#: registration/models.py:354
+#: registration/models.py:355
#, python-brace-format
msgid ""
"You have not uploaded your health sheet. You can do it by clicking on ce lien."
-#: registration/models.py:359
+#: registration/models.py:360
msgid "Health sheet"
msgstr "Fiche sanitaire"
-#: registration/models.py:365
+#: registration/models.py:366
#, python-brace-format
msgid ""
"You have not uploaded your vaccine sheet. You can do it by clicking on ce lien."
-#: registration/models.py:370
+#: registration/models.py:371
msgid "Vaccine sheet"
msgstr "Carnet de vaccination"
-#: registration/models.py:379
+#: registration/models.py:380
#, python-brace-format
msgid ""
"You have to pay {amount} € for your registration, or send a scholarship "
@@ -2335,27 +2335,27 @@ msgstr ""
"notification de bourse ou un justificatif de paiement. Vous pouvez le faire "
"sur la page de paiement."
-#: registration/models.py:385 registration/models.py:394
+#: registration/models.py:386 registration/models.py:395
msgid "Payment"
msgstr "Paiement"
-#: registration/models.py:391
+#: registration/models.py:392
msgid "Your payment is under approval."
msgstr "Votre paiement est en cours de validation."
-#: registration/models.py:403
+#: registration/models.py:404
msgid "student registration"
msgstr "inscription d'élève"
-#: registration/models.py:404
+#: registration/models.py:405
msgid "student registrations"
msgstr "inscriptions d'élève"
-#: registration/models.py:415
+#: registration/models.py:416
msgid "most recent degree in mathematics, computer science or physics"
msgstr "Dernier diplôme obtenu en mathématiques, informatique ou physique"
-#: registration/models.py:416
+#: registration/models.py:417
msgid ""
"Your most recent degree in maths, computer science or physics, or your last "
"entrance exam (CAPES, Agrégation,…)"
@@ -2363,23 +2363,23 @@ msgstr ""
"Votre dernier diplôme en mathématiques, informatique ou physique, ou votre "
"dernier concours obtenu (CAPES, Agrégation, …)"
-#: registration/models.py:421 registration/models.py:443
+#: registration/models.py:422 registration/models.py:444
msgid "professional activity"
msgstr "activité professionnelle"
-#: registration/models.py:434
+#: registration/models.py:435
msgid "coach registration"
msgstr "inscription d'encadrant⋅e"
-#: registration/models.py:435
+#: registration/models.py:436
msgid "coach registrations"
msgstr "inscriptions d'encadrant⋅es"
-#: registration/models.py:447
+#: registration/models.py:448
msgid "administrator"
msgstr "administrateur⋅rice"
-#: registration/models.py:448
+#: registration/models.py:449
msgid ""
"An administrator has all rights. Please don't give this right to all juries "
"and volunteers."
@@ -2387,15 +2387,15 @@ msgstr ""
"Un⋅e administrateur⋅rice a tous les droits. Merci de ne pas donner ce droit "
"à toustes les juré⋅es et bénévoles."
-#: registration/models.py:458
+#: registration/models.py:459
msgid "admin"
msgstr "admin"
-#: registration/models.py:458
+#: registration/models.py:459
msgid "volunteer"
msgstr "bénévole"
-#: registration/models.py:471
+#: registration/models.py:472
msgid ""
"Registrations for tournament {tournament} are closing on {date:%Y-%m-%d %H:"
"%M}. There are for now {validated_teams} validated teams (+ {pending_teams} "
@@ -2405,11 +2405,11 @@ msgstr ""
"%M}. Il y a pour l'instant {validated_teams} équipes validées (+ "
"{pending_teams} en attente) sur {max_teams} attendues."
-#: registration/models.py:479
+#: registration/models.py:480
msgid "Registrations"
msgstr "Inscriptions"
-#: registration/models.py:486
+#: registration/models.py:487
#, python-brace-format
msgid ""
"The team {trigram} requested to be validated for the tournament of "
@@ -2420,7 +2420,7 @@ msgstr ""
"Vous pouvez vérifier le statut de l'équipe sur la page de "
"l'équipe."
-#: registration/models.py:503
+#: registration/models.py:504
#, python-brace-format
msgid ""
"There are {valid} validated payments, {pending} pending and {invalid} "
@@ -2431,11 +2431,11 @@ msgstr ""
"invalides pour le tournoi {tournament}. Vous pouvez vérifier le statut des "
"paiements sur la liste des paiements."
-#: registration/models.py:510
+#: registration/models.py:511
msgid "Payments"
msgstr "Paiements"
-#: registration/models.py:532 registration/models.py:543
+#: registration/models.py:534 registration/models.py:545
#, python-brace-format
msgid ""
"
You are in the jury of the pool {pool} for the tournament of "
@@ -2444,7 +2444,7 @@ msgstr ""
"
Vous êtes dans le jury de la poule {pool} pour le tournoi {tournament}. "
"Vous pouvez trouver la page de la poule ici.
"
-#: registration/models.py:556
+#: registration/models.py:558
#, python-brace-format
msgid ""
"You don't have given any note as a jury for the passage {passage} in the "
@@ -2455,15 +2455,15 @@ msgstr ""
"{passage} dans la poule {pool} de {tournament}. Vous pouvez donner vos notes "
"ici.
"
-#: registration/models.py:572
+#: registration/models.py:574
msgid "volunteer registration"
msgstr "inscription de bénévole"
-#: registration/models.py:573
+#: registration/models.py:575
msgid "volunteer registrations"
msgstr "inscriptions de bénévoles"
-#: registration/models.py:594
+#: registration/models.py:596
msgid ""
"If set to true, then one payment is made for the full team, for example if "
"the school pays for all."
@@ -2471,100 +2471,100 @@ msgstr ""
"Si vrai, alors un seul paiement est fait pour toute l'équipe, par exemple si "
"le lycée paie pour tout le monde."
-#: registration/models.py:599
+#: registration/models.py:601
msgid "total amount"
msgstr "montant total"
-#: registration/models.py:600
+#: registration/models.py:602
msgid "Corresponds to the total required amount to pay, in euros."
msgstr "Correspond au montant total à payer, en euros."
-#: registration/models.py:605
+#: registration/models.py:607
msgid "token"
msgstr "jeton"
-#: registration/models.py:608
+#: registration/models.py:610
msgid "A token to authorize external users to make this payment."
msgstr "Un jeton pour autoriser des utilisateurs externes à faire ce paiement."
-#: registration/models.py:612
+#: registration/models.py:614
msgid "for final tournament"
msgstr "pour la finale"
-#: registration/models.py:617
+#: registration/models.py:619
msgid "type"
msgstr "type"
-#: registration/models.py:620
+#: registration/models.py:622
msgid "No payment"
msgstr "Pas de paiement"
-#: registration/models.py:621
+#: registration/models.py:623
#: registration/templates/registration/payment_form.html:72
msgid "Credit card"
msgstr "Carte bancaire"
-#: registration/models.py:622
+#: registration/models.py:624
msgid "Scholarship"
msgstr "Notification de bourse"
-#: registration/models.py:623
+#: registration/models.py:625
#: registration/templates/registration/payment_form.html:77
msgid "Bank transfer"
msgstr "Virement bancaire"
-#: registration/models.py:624
+#: registration/models.py:626
msgid "Other (please indicate)"
msgstr "Autre (veuillez spécifier)"
-#: registration/models.py:625
+#: registration/models.py:627
msgid "The tournament is free"
msgstr "Le tournoi est gratuit"
-#: registration/models.py:632
+#: registration/models.py:634
msgid "Hello Asso checkout intent ID"
msgstr "ID de l'intention de paiement Hello Asso"
-#: registration/models.py:639
+#: registration/models.py:641
msgid "receipt"
msgstr "justificatif"
-#: registration/models.py:640
+#: registration/models.py:642
msgid "only if you have a scholarship or if you chose a bank transfer."
msgstr ""
"Nécessaire seulement si vous déclarez être boursièr⋅e ou si vous payez par "
"virement bancaire."
-#: registration/models.py:647
+#: registration/models.py:649
msgid "additional information"
msgstr "informations additionnelles"
-#: registration/models.py:648
+#: registration/models.py:650
msgid "To help us to find your payment."
msgstr "Pour nous aider à retrouver votre paiement, si nécessaire."
-#: registration/models.py:654
+#: registration/models.py:656
msgid "payment valid"
msgstr "paiement valide"
-#: registration/models.py:714
+#: registration/models.py:716
msgid "Reminder for your payment"
msgstr "Rappel pour votre paiement"
-#: registration/models.py:725
+#: registration/models.py:727
msgid "Payment confirmation"
msgstr "Confirmation de paiement"
-#: registration/models.py:747
+#: registration/models.py:749
#, python-brace-format
msgid "Payment of {registrations}"
msgstr "Paiements de {registrations}"
-#: registration/models.py:750
+#: registration/models.py:752
msgid "payment"
msgstr "paiement"
-#: registration/models.py:751
+#: registration/models.py:753
msgid "payments"
msgstr "paiements"
@@ -3393,8 +3393,8 @@ msgid ""
"about other solutions."
msgstr ""
"Désolé, votre requête est invalide. Aucune idée de ce qui a pu se passer. Un "
-"email a été envoyé aux administrateur⋅rices avec les détails de l'erreur. Vous "
-"pouvez désormais retourner chercher d'autres solutions."
+"email a été envoyé aux administrateur⋅rices avec les détails de l'erreur. "
+"Vous pouvez désormais retourner chercher d'autres solutions."
#: tfjm/templates/403.html:6
msgid "Permission denied"
@@ -3431,9 +3431,9 @@ msgid ""
"soon. You can now think about other solutions."
msgstr ""
"Désolé, une erreur est survenue lors du traitement de votre requête. Aucune "
-"idée de ce qui a pu se passer. Un email a été envoyé aux administrateur⋅rices "
-"avec les détails de l'erreur. Vous pouvez désormais retourner chercher "
-"d'autres solutions.."
+"idée de ce qui a pu se passer. Un email a été envoyé aux "
+"administrateur⋅rices avec les détails de l'erreur. Vous pouvez désormais "
+"retourner chercher d'autres solutions.."
#: tfjm/templates/base.html:71
msgid "Search results"
diff --git a/participation/models.py b/participation/models.py
index 78153d4..ec16813 100644
--- a/participation/models.py
+++ b/participation/models.py
@@ -744,11 +744,11 @@ class Participation(models.Model):
reporter_passage = pool.passages.get(reporter=self)
defender_text = _("The solutions draw is ended. You can check the result on "
- "this page.
"
+ "this page."
"For the first round, you will defend "
"your solution of the problem {problem}.
")
draw_url = reverse_lazy("draw:index")
- solution_url = reverse_lazy("solution", args=(defender_passage.defended_solution.pk,))
+ solution_url = defender_passage.defended_solution.url
defender_content = format_lazy(defender_text, draw_url=draw_url,
solution_url=solution_url, problem=defender_passage.solution_number)
@@ -780,7 +780,7 @@ class Participation(models.Model):
defender_text = _("For the second round, you will defend "
"your solution of the problem {problem}.
")
draw_url = reverse_lazy("draw:index")
- solution_url = reverse_lazy("solution", args=(defender_passage.defended_solution.pk,))
+ solution_url = defender_passage.defended_solution.url
defender_content = format_lazy(defender_text, draw_url=draw_url,
solution_url=solution_url, problem=defender_passage.solution_number)