Add direct links to the opponent and reporter solutions

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello 2024-04-03 23:14:59 +02:00
parent 78e8a92c3a
commit a763abf781
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
2 changed files with 110 additions and 82 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TFJM\n" "Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-03 23:04+0200\n" "POT-Creation-Date: 2024-04-03 23:12+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n" "Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -30,14 +30,14 @@ msgstr "équipes"
#: draw/admin.py:53 draw/admin.py:71 draw/admin.py:88 draw/models.py:26 #: 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:79 participation/admin.py:140
#: participation/admin.py:171 participation/models.py:648 #: participation/admin.py:171 participation/models.py:648
#: participation/models.py:672 participation/models.py:831 #: participation/models.py:672 participation/models.py:837
#: registration/models.py:673 #: registration/models.py:673
#: registration/templates/registration/payment_form.html:53 #: registration/templates/registration/payment_form.html:53
msgid "tournament" msgid "tournament"
msgstr "tournoi" msgstr "tournoi"
#: draw/admin.py:92 draw/models.py:234 draw/models.py:433 #: draw/admin.py:92 draw/models.py:234 draw/models.py:433
#: participation/models.py:835 #: participation/models.py:841
msgid "round" msgid "round"
msgstr "tour" msgstr "tour"
@ -175,7 +175,7 @@ msgstr "La poule en cours, où les équipes choisissent leurs problèmes"
msgid "rounds" msgid "rounds"
msgstr "tours" msgstr "tours"
#: draw/models.py:257 participation/models.py:849 #: draw/models.py:257 participation/models.py:855
msgid "letter" msgid "letter"
msgstr "lettre" msgstr "lettre"
@ -214,17 +214,17 @@ msgid "Pool {letter}{number}"
msgstr "Poule {letter}{number}" msgstr "Poule {letter}{number}"
#: draw/models.py:414 draw/models.py:441 participation/admin.py:136 #: draw/models.py:414 draw/models.py:441 participation/admin.py:136
#: participation/admin.py:155 participation/models.py:1318 #: participation/admin.py:155 participation/models.py:1324
#: participation/models.py:1327 participation/tables.py:84 #: participation/models.py:1333 participation/tables.py:84
msgid "pool" msgid "pool"
msgstr "poule" msgstr "poule"
#: draw/models.py:415 participation/models.py:1319 #: draw/models.py:415 participation/models.py:1325
msgid "pools" msgid "pools"
msgstr "poules" msgstr "poules"
#: draw/models.py:427 participation/models.py:821 participation/models.py:1488 #: draw/models.py:427 participation/models.py:827 participation/models.py:1494
#: participation/models.py:1518 participation/models.py:1560 #: participation/models.py:1524 participation/models.py:1566
msgid "participation" msgid "participation"
msgstr "participation" msgstr "participation"
@ -248,8 +248,8 @@ msgid ""
msgstr "" msgstr ""
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1." "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:1341 #: draw/models.py:464 draw/models.py:487 participation/models.py:1347
#: participation/models.py:1525 #: participation/models.py:1531
#, python-brace-format #, python-brace-format
msgid "Problem #{problem}" msgid "Problem #{problem}"
msgstr "Problème n°{problem}" msgstr "Problème n°{problem}"
@ -457,21 +457,21 @@ msgid "selected for final"
msgstr "sélectionnée pour la finale" msgstr "sélectionnée pour la finale"
#: participation/admin.py:124 participation/admin.py:183 #: participation/admin.py:124 participation/admin.py:183
#: participation/models.py:1348 participation/tables.py:112 #: participation/models.py:1354 participation/tables.py:112
msgid "defender" msgid "defender"
msgstr "défenseur⋅se" msgstr "défenseur⋅se"
#: participation/admin.py:128 participation/models.py:1355 #: participation/admin.py:128 participation/models.py:1361
#: participation/models.py:1572 #: participation/models.py:1578
msgid "opponent" msgid "opponent"
msgstr "opposant⋅e" msgstr "opposant⋅e"
#: participation/admin.py:132 participation/models.py:1362 #: participation/admin.py:132 participation/models.py:1368
#: participation/models.py:1573 #: participation/models.py:1579
msgid "reporter" msgid "reporter"
msgstr "rapporteur⋅rice" msgstr "rapporteur⋅rice"
#: participation/admin.py:187 participation/models.py:1523 #: participation/admin.py:187 participation/models.py:1529
msgid "problem" msgid "problem"
msgstr "numéro de problème" msgstr "numéro de problème"
@ -880,7 +880,42 @@ msgstr ""
"tour, vous défendrez <a href='{solution_url}'>votre solution du problème " "tour, vous défendrez <a href='{solution_url}'>votre solution du problème "
"{problem}</a>.</p>" "{problem}</a>.</p>"
#: participation/models.py:755 participation/models.py:787 #: participation/models.py:755
#, python-brace-format
msgid ""
"<p>You will oppose the solution of the team {opponent} on the <a "
"href='{solution_url}'>problem {problem}</a>. You can upload your synthesis "
"sheet on <a href='{passage_url}'>this page</a>.</p>"
msgstr ""
"<p>Vous opposerez la solution de l'équipe {opponent} sur le <a "
"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:764
#, python-brace-format
msgid ""
"<p>You will report the solution of the team {reporter} on the <a "
"href='{solution_url}'>problem {problem}. You can upload your synthesis sheet "
"on <a href='{passage_url}'>this page</a>.</p>"
msgstr ""
"<p>Vous rapporterez la solution de l'équipe {reporter} sur le <a "
"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:775 registration/models.py:539
msgid "First round"
msgstr "Premier tour"
#: participation/models.py:786
#, python-brace-format
msgid ""
"<p>For the second round, you will defend <a href='{solution_url}'>your "
"solution of the problem {problem}</a>.</p>"
msgstr ""
"<p>Pour le second tour, vous défendrez <a href='{solution_url}'>votre "
"solution du problème {problem}</a>.</p>"
#: participation/models.py:793
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"<p>You will oppose the solution of the team {opponent} on the problem " "<p>You will oppose the solution of the team {opponent} on the problem "
@ -891,7 +926,7 @@ msgstr ""
"{problem}. Vous pouvez envoyer votre note de synthèse sur <a " "{problem}. Vous pouvez envoyer votre note de synthèse sur <a "
"href='{passage_url}'>cette page</a>.</p>" "href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:761 participation/models.py:793 #: participation/models.py:799
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"<p>You will report the solution of the team {reporter} on the problem " "<p>You will report the solution of the team {reporter} on the problem "
@ -902,24 +937,11 @@ msgstr ""
"{problem}. Vous pouvez envoyer votre note de synthèse sur <a " "{problem}. Vous pouvez envoyer votre note de synthèse sur <a "
"href='{passage_url}'>cette page</a>.</p>" "href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:769 registration/models.py:539 #: participation/models.py:807 registration/models.py:550
msgid "First round"
msgstr "Premier tour"
#: participation/models.py:780
#, python-brace-format
msgid ""
"<p>For the second round, you will defend <a href='{solution_url}'>your "
"solution of the problem {problem}</a>.</p>"
msgstr ""
"<p>Pour le second tour, vous défendrez <a href='{solution_url}'>votre "
"solution du problème {problem}</a>.</p>"
#: participation/models.py:801 registration/models.py:550
msgid "Second round" msgid "Second round"
msgstr "Second tour" msgstr "Second tour"
#: participation/models.py:807 #: participation/models.py:813
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"<p>The tournament {tournament} is ended. You can check the results on the <a " "<p>The tournament {tournament} is ended. You can check the results on the <a "
@ -928,40 +950,40 @@ msgstr ""
"<p>Le tournoi {tournament} est terminé. Vous pouvez consulter les résultats " "<p>Le tournoi {tournament} est terminé. Vous pouvez consulter les résultats "
"sur la <a href='{url}'>page du tournoi</a>.</p>" "sur la <a href='{url}'>page du tournoi</a>.</p>"
#: participation/models.py:812 #: participation/models.py:818
msgid "Tournament ended" msgid "Tournament ended"
msgstr "Tournoi terminé" msgstr "Tournoi terminé"
#: participation/models.py:822 participation/models.py:855 #: participation/models.py:828 participation/models.py:861
msgid "participations" msgid "participations"
msgstr "participations" msgstr "participations"
#: participation/models.py:837 participation/models.py:838 #: participation/models.py:843 participation/models.py:844
#, python-brace-format #, python-brace-format
msgid "Round {round}" msgid "Round {round}"
msgstr "Tour {round}" msgstr "Tour {round}"
#: participation/models.py:861 #: participation/models.py:867
msgid "juries" msgid "juries"
msgstr "jurys" msgstr "jurys"
#: participation/models.py:870 #: participation/models.py:876
msgid "president of the jury" msgid "president of the jury"
msgstr "président⋅e du jury" msgstr "président⋅e du jury"
#: participation/models.py:877 #: participation/models.py:883
msgid "BigBlueButton URL" msgid "BigBlueButton URL"
msgstr "Lien BigBlueButton" msgstr "Lien BigBlueButton"
#: participation/models.py:878 #: participation/models.py:884
msgid "The link of the BBB visio for this pool." msgid "The link of the BBB visio for this pool."
msgstr "Le lien du salon BBB pour cette poule." msgstr "Le lien du salon BBB pour cette poule."
#: participation/models.py:883 #: participation/models.py:889
msgid "results available" msgid "results available"
msgstr "résultats disponibles" msgstr "résultats disponibles"
#: participation/models.py:884 #: participation/models.py:890
msgid "" msgid ""
"Check this case when results become accessible to teams. They stay " "Check this case when results become accessible to teams. They stay "
"accessible to you. Only averages are given." "accessible to you. Only averages are given."
@ -970,37 +992,37 @@ msgstr ""
"Ils restent toujours accessibles pour vous. Seules les moyennes sont " "Ils restent toujours accessibles pour vous. Seules les moyennes sont "
"communiquées." "communiquées."
#: participation/models.py:909 #: participation/models.py:915
msgid "The president of the jury must be part of the jury." msgid "The president of the jury must be part of the jury."
msgstr "Læ président⋅e du jury doit faire partie du jury." msgstr "Læ président⋅e du jury doit faire partie du jury."
#: participation/models.py:1301 #: participation/models.py:1307
#, python-brace-format #, python-brace-format
msgid "The jury {jury} is not part of the jury for this pool." msgid "The jury {jury} is not part of the jury for this pool."
msgstr "{jury} ne fait pas partie du jury pour cette poule." msgstr "{jury} ne fait pas partie du jury pour cette poule."
#: participation/models.py:1312 #: participation/models.py:1318
#, python-brace-format #, python-brace-format
msgid "Pool of day {round} for tournament {tournament} with teams {teams}" msgid "Pool of day {round} for tournament {tournament} with teams {teams}"
msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}" msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}"
#: participation/models.py:1332 #: participation/models.py:1338
msgid "position" msgid "position"
msgstr "position" msgstr "position"
#: participation/models.py:1339 #: participation/models.py:1345
msgid "defended solution" msgid "defended solution"
msgstr "solution défendue" msgstr "solution défendue"
#: participation/models.py:1372 #: participation/models.py:1378
msgid "observer" msgid "observer"
msgstr "observateur⋅rice" msgstr "observateur⋅rice"
#: participation/models.py:1377 #: participation/models.py:1383
msgid "penalties" msgid "penalties"
msgstr "pénalités" msgstr "pénalités"
#: participation/models.py:1379 #: participation/models.py:1385
msgid "" msgid ""
"Number of penalties for the defender. The defender will loose a 0.5 " "Number of penalties for the defender. The defender will loose a 0.5 "
"coefficient per penalty." "coefficient per penalty."
@ -1008,124 +1030,124 @@ msgstr ""
"Nombre de pénalités pour l'équipe défenseuse. Elle perd un coefficient 0.5 " "Nombre de pénalités pour l'équipe défenseuse. Elle perd un coefficient 0.5 "
"sur sa présentation orale par pénalité." "sur sa présentation orale par pénalité."
#: participation/models.py:1455 participation/models.py:1458
#: participation/models.py:1461 participation/models.py:1464 #: participation/models.py:1461 participation/models.py:1464
#: participation/models.py:1467 participation/models.py:1470
#, python-brace-format #, python-brace-format
msgid "Team {trigram} is not registered in the pool." msgid "Team {trigram} is not registered in the pool."
msgstr "L'équipe {trigram} n'est pas inscrite dans la poule." msgstr "L'équipe {trigram} n'est pas inscrite dans la poule."
#: participation/models.py:1469 #: participation/models.py:1475
#, python-brace-format #, python-brace-format
msgid "Passage of {defender} for problem {problem}" msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}" msgstr "Passage de {defender} pour le problème {problem}"
#: participation/models.py:1473 participation/models.py:1482 #: participation/models.py:1479 participation/models.py:1488
#: participation/models.py:1567 participation/models.py:1609 #: participation/models.py:1573 participation/models.py:1615
msgid "passage" msgid "passage"
msgstr "passage" msgstr "passage"
#: participation/models.py:1474 #: participation/models.py:1480
msgid "passages" msgid "passages"
msgstr "passages" msgstr "passages"
#: participation/models.py:1493 #: participation/models.py:1499
msgid "difference" msgid "difference"
msgstr "différence" msgstr "différence"
#: participation/models.py:1494 #: participation/models.py:1500
msgid "Score to add/remove on the final score" msgid "Score to add/remove on the final score"
msgstr "Score à ajouter/retrancher au score final" msgstr "Score à ajouter/retrancher au score final"
#: participation/models.py:1501 #: participation/models.py:1507
msgid "tweak" msgid "tweak"
msgstr "harmonisation" msgstr "harmonisation"
#: participation/models.py:1502 #: participation/models.py:1508
msgid "tweaks" msgid "tweaks"
msgstr "harmonisations" msgstr "harmonisations"
#: participation/models.py:1530 #: participation/models.py:1536
msgid "solution for the final tournament" msgid "solution for the final tournament"
msgstr "solution pour la finale" msgstr "solution pour la finale"
#: participation/models.py:1535 participation/models.py:1578 #: participation/models.py:1541 participation/models.py:1584
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: participation/models.py:1545 #: participation/models.py:1551
#, python-brace-format #, python-brace-format
msgid "Solution of team {team} for problem {problem}" msgid "Solution of team {team} for problem {problem}"
msgstr "Solution de l'équipe {team} pour le problème {problem}" msgstr "Solution de l'équipe {team} pour le problème {problem}"
#: participation/models.py:1547 #: participation/models.py:1553
msgid "for final" msgid "for final"
msgstr "pour la finale" msgstr "pour la finale"
#: participation/models.py:1550 #: participation/models.py:1556
msgid "solution" msgid "solution"
msgstr "solution" msgstr "solution"
#: participation/models.py:1551 #: participation/models.py:1557
msgid "solutions" msgid "solutions"
msgstr "solutions" msgstr "solutions"
#: participation/models.py:1584 #: participation/models.py:1590
#, python-brace-format #, python-brace-format
msgid "Synthesis of {team} as {type} for problem {problem} of {defender}" msgid "Synthesis of {team} as {type} for problem {problem} of {defender}"
msgstr "" msgstr ""
"Note de synthèse de l'équipe {team} en tant que {type} pour le problème " "Note de synthèse de l'équipe {team} en tant que {type} pour le problème "
"{problem} de {defender}" "{problem} de {defender}"
#: participation/models.py:1592 #: participation/models.py:1598
msgid "synthesis" msgid "synthesis"
msgstr "note de synthèse" msgstr "note de synthèse"
#: participation/models.py:1593 #: participation/models.py:1599
msgid "syntheses" msgid "syntheses"
msgstr "notes de synthèse" msgstr "notes de synthèse"
#: participation/models.py:1602 #: participation/models.py:1608
msgid "jury" msgid "jury"
msgstr "jury" msgstr "jury"
#: participation/models.py:1614 #: participation/models.py:1620
msgid "defender writing note" msgid "defender writing note"
msgstr "note d'écrit défenseur⋅se" msgstr "note d'écrit défenseur⋅se"
#: participation/models.py:1620 #: participation/models.py:1626
msgid "defender oral note" msgid "defender oral note"
msgstr "note d'oral défenseur⋅se" msgstr "note d'oral défenseur⋅se"
#: participation/models.py:1626 #: participation/models.py:1632
msgid "opponent writing note" msgid "opponent writing note"
msgstr "note d'écrit opposant⋅e" msgstr "note d'écrit opposant⋅e"
#: participation/models.py:1632 #: participation/models.py:1638
msgid "opponent oral note" msgid "opponent oral note"
msgstr "note d'oral opposant⋅e" msgstr "note d'oral opposant⋅e"
#: participation/models.py:1638 #: participation/models.py:1644
msgid "reporter writing note" msgid "reporter writing note"
msgstr "note d'écrit rapporteur⋅rice" msgstr "note d'écrit rapporteur⋅rice"
#: participation/models.py:1644 #: participation/models.py:1650
msgid "reporter oral note" msgid "reporter oral note"
msgstr "note d'oral du rapporteur⋅rice" msgstr "note d'oral du rapporteur⋅rice"
#: participation/models.py:1650 #: participation/models.py:1656
msgid "observer note" msgid "observer note"
msgstr "note de l'observation" msgstr "note de l'observation"
#: participation/models.py:1711 #: participation/models.py:1717
#, python-brace-format #, python-brace-format
msgid "Notes of {jury} for {passage}" msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}" msgstr "Notes de {jury} pour le {passage}"
#: participation/models.py:1714 #: participation/models.py:1720
msgid "note" msgid "note"
msgstr "note" msgstr "note"
#: participation/models.py:1715 #: participation/models.py:1721
msgid "notes" msgid "notes"
msgstr "notes" msgstr "notes"

View File

@ -752,16 +752,22 @@ class Participation(models.Model):
defender_content = format_lazy(defender_text, draw_url=draw_url, defender_content = format_lazy(defender_text, draw_url=draw_url,
solution_url=solution_url, problem=defender_passage.solution_number) solution_url=solution_url, problem=defender_passage.solution_number)
opponent_text = _("<p>You will oppose the solution of the team {opponent} on the problem {problem}. " opponent_text = _("<p>You will oppose the solution of the team {opponent} on the "
"<a href='{solution_url}'>problem {problem}</a>. "
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>") "You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
solution_url = opponent_passage.defended_solution.url
passage_url = reverse_lazy("participation:passage_detail", args=(opponent_passage.pk,)) passage_url = reverse_lazy("participation:passage_detail", args=(opponent_passage.pk,))
opponent_content = format_lazy(opponent_text, opponent=opponent_passage.defender.team.trigram, opponent_content = format_lazy(opponent_text, opponent=opponent_passage.defender.team.trigram,
solution_url=solution_url,
problem=opponent_passage.solution_number, passage_url=passage_url) problem=opponent_passage.solution_number, passage_url=passage_url)
reporter_text = _("<p>You will report the solution of the team {reporter} on the problem {problem}. " reporter_text = _("<p>You will report the solution of the team {reporter} on the "
"<a href='{solution_url}'>problem {problem}. "
"You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>") "You can upload your synthesis sheet on <a href='{passage_url}'>this page</a>.</p>")
solution_url = reporter_passage.defended_solution.url
passage_url = reverse_lazy("participation:passage_detail", args=(reporter_passage.pk,)) passage_url = reverse_lazy("participation:passage_detail", args=(reporter_passage.pk,))
reporter_content = format_lazy(reporter_text, reporter=reporter_passage.defender.team.trigram, reporter_content = format_lazy(reporter_text, reporter=reporter_passage.defender.team.trigram,
solution_url=solution_url,
problem=reporter_passage.solution_number, passage_url=passage_url) problem=reporter_passage.solution_number, passage_url=passage_url)
content = defender_content + opponent_content + reporter_content content = defender_content + opponent_content + reporter_content