From 49729485b791e65a1ada0f054850779b7afcc482 Mon Sep 17 00:00:00 2001 From: Maxime JUST Date: Tue, 11 Nov 2025 18:50:01 +0100 Subject: [PATCH] Fix linters + Fix translations --- locale/fr/LC_MESSAGES/django.po | 554 ++++++++++++++++---------------- participation/forms.py | 12 +- participation/models.py | 5 +- registration/forms.py | 2 - registration/models.py | 16 +- 5 files changed, 293 insertions(+), 296 deletions(-) diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 3dcfb76..bce3b36 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: 2025-11-07 11:02+0100\n" +"POT-Creation-Date: 2025-11-11 18:36+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Emmy D'Anello \n" "Language-Team: LANGUAGE \n" @@ -37,7 +37,7 @@ msgstr "Canaux d'équipes" msgid "Private channels" msgstr "Messages privés" -#: chat/models.py:29 participation/models.py:36 participation/models.py:281 +#: chat/models.py:29 participation/models.py:35 participation/models.py:280 #: participation/tables.py:19 participation/tables.py:35 msgid "name" msgstr "nom" @@ -78,9 +78,9 @@ 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:86 participation/admin.py:148 -#: participation/admin.py:203 participation/models.py:801 -#: participation/models.py:825 participation/models.py:1164 -#: registration/models.py:797 +#: participation/admin.py:203 participation/models.py:800 +#: participation/models.py:824 participation/models.py:1163 +#: registration/models.py:802 #: registration/templates/registration/payment_form.html:53 #: survey/templates/survey/survey_detail.html:51 msgid "tournament" @@ -96,7 +96,7 @@ msgstr "" #: chat/models.py:73 draw/models.py:446 draw/models.py:473 #: participation/admin.py:144 participation/admin.py:172 -#: participation/models.py:1707 participation/models.py:1716 +#: participation/models.py:1706 participation/models.py:1715 #: participation/tables.py:85 msgid "pool" msgstr "poule" @@ -109,10 +109,10 @@ msgstr "" "concernée." #: chat/models.py:84 draw/templates/draw/tournament_content.html:277 -#: participation/admin.py:199 participation/models.py:270 -#: participation/models.py:816 +#: participation/admin.py:199 participation/models.py:269 +#: participation/models.py:815 #: participation/templates/participation/tournament_harmonize.html:15 -#: registration/models.py:160 registration/models.py:788 +#: registration/models.py:160 registration/models.py:793 #: registration/tables.py:39 #: registration/templates/registration/payment_form.html:52 #: survey/templates/survey/survey_detail.html:62 @@ -261,13 +261,13 @@ msgid "Log in" msgstr "Connexion" #: draw/admin.py:39 draw/admin.py:57 draw/admin.py:75 -#: participation/admin.py:116 participation/models.py:271 +#: participation/admin.py:116 participation/models.py:270 #: participation/tables.py:89 msgid "teams" msgstr "équipes" #: draw/admin.py:92 draw/models.py:245 draw/models.py:465 -#: participation/models.py:1168 +#: participation/models.py:1167 msgid "round" msgstr "tour" @@ -646,7 +646,7 @@ msgstr "Le numéro du tour doit être entre 1 et {nb}." msgid "rounds" msgstr "tours" -#: draw/models.py:268 participation/models.py:1176 +#: draw/models.py:268 participation/models.py:1175 msgid "letter" msgstr "lettre" @@ -684,12 +684,12 @@ msgstr "L'instance complète de la poule." msgid "Pool {letter}{number}" msgstr "Poule {letter}{number}" -#: draw/models.py:447 participation/models.py:1708 +#: draw/models.py:447 participation/models.py:1707 msgid "pools" msgstr "poules" -#: draw/models.py:459 participation/models.py:1154 participation/models.py:1927 -#: participation/models.py:1961 participation/models.py:2003 +#: draw/models.py:459 participation/models.py:1153 participation/models.py:1926 +#: participation/models.py:1960 participation/models.py:2002 msgid "participation" msgstr "participation" @@ -713,8 +713,8 @@ 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:1289 -#: participation/models.py:1730 participation/models.py:1968 +#: draw/models.py:496 draw/models.py:519 participation/models.py:1288 +#: participation/models.py:1729 participation/models.py:1967 #: participation/views.py:1537 participation/views.py:1802 #, python-brace-format msgid "Problem #{problem}" @@ -987,36 +987,36 @@ msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}" msgid "valid" msgstr "valide" -#: participation/admin.py:94 participation/models.py:837 +#: participation/admin.py:94 participation/models.py:836 msgid "selected for final" msgstr "sélectionnée pour la finale" #: participation/admin.py:128 participation/admin.py:215 -#: participation/models.py:1737 participation/tables.py:113 +#: participation/models.py:1736 participation/tables.py:113 msgid "reporter" msgstr "défenseur⋅se" -#: participation/admin.py:132 participation/models.py:1744 -#: participation/models.py:2015 +#: participation/admin.py:132 participation/models.py:1743 +#: participation/models.py:2014 msgid "opponent" msgstr "opposant⋅e" -#: participation/admin.py:136 participation/models.py:1751 -#: participation/models.py:2016 +#: participation/admin.py:136 participation/models.py:1750 +#: participation/models.py:2015 msgid "reviewer" msgstr "rapporteur⋅rice" -#: participation/admin.py:140 participation/models.py:1758 -#: participation/models.py:2017 +#: participation/admin.py:140 participation/models.py:1757 +#: participation/models.py:2016 msgid "observer" msgstr "observateur⋅rice" -#: participation/admin.py:219 participation/models.py:1966 +#: participation/admin.py:219 participation/models.py:1965 msgid "problem" msgstr "numéro de problème" -#: participation/apps.py:14 participation/models.py:1155 -#: participation/models.py:1198 +#: participation/apps.py:14 participation/models.py:1154 +#: participation/models.py:1197 msgid "participations" msgstr "participations" @@ -1040,7 +1040,20 @@ msgstr "Aucune équipe n'a été trouvée avec ce code d'accès." msgid "The team is already validated or the validation is pending." msgstr "La validation de l'équipe est déjà faite ou en cours." -#: participation/forms.py:115 participation/forms.py:388 +#: participation/forms.py:84 +msgid "" +"For the tournaments in the region \"Île-de-France\": registration is unified " +"for each tournament. By choosing a tournament \"Île-de-France\", you're " +"accepting that your team may be selected for one of these tournaments. In " +"case of date conflict, please write them in your motivation letter." +msgstr "" +"Pour les tournois franciliens : l'inscription est unifiée pour chacun des " +"tournois. En choisissant un tournoi « Île-de-France », vous acceptez que " +"votre équipe puisse être sélectionnée pour l'un des tournois concernés. En " +"cas de contraintes de date, merci de les indiquer dans votre lettre de " +"motivation." + +#: participation/forms.py:119 participation/forms.py:392 #: registration/forms.py:126 registration/forms.py:148 #: registration/forms.py:170 registration/forms.py:192 #: registration/forms.py:214 registration/forms.py:236 @@ -1048,7 +1061,7 @@ msgstr "La validation de l'équipe est déjà faite ou en cours." msgid "The uploaded file size must be under 2 Mo." msgstr "Le fichier envoyé doit peser moins de 2 Mo." -#: participation/forms.py:117 registration/forms.py:128 +#: participation/forms.py:121 registration/forms.py:128 #: registration/forms.py:150 registration/forms.py:172 #: registration/forms.py:194 registration/forms.py:216 #: registration/forms.py:238 registration/forms.py:300 @@ -1056,39 +1069,39 @@ msgstr "Le fichier envoyé doit peser moins de 2 Mo." msgid "The uploaded file must be a PDF, PNG of JPEG file." msgstr "Le fichier envoyé doit être au format PDF, PNG ou JPEG." -#: participation/forms.py:135 +#: participation/forms.py:139 msgid "I engage myself to participate to the whole tournament." msgstr "Je m'engage à participer à l'intégralité du tournoi." -#: participation/forms.py:150 +#: participation/forms.py:154 msgid "Message to address to the team:" msgstr "Message à adresser à l'équipe :" -#: participation/forms.py:197 +#: participation/forms.py:201 msgid "The uploaded file size must be under 5 Mo." msgstr "Le fichier envoyé doit peser moins de 5 Mo." -#: participation/forms.py:199 participation/forms.py:390 +#: participation/forms.py:203 participation/forms.py:394 msgid "The uploaded file must be a PDF file." msgstr "Le fichier envoyé doit être au format PDF." -#: participation/forms.py:203 +#: participation/forms.py:207 msgid "The PDF file must not have more than 30 pages." msgstr "Le fichier PDF ne doit pas avoir plus de 30 pages." -#: participation/forms.py:257 +#: participation/forms.py:261 msgid "Add" msgstr "Ajouter" -#: participation/forms.py:272 +#: participation/forms.py:276 msgid "This user already exists, but is a participant." msgstr "Cet⋅te utilisateur⋅rice existe déjà, mais en tant que participant⋅e." -#: participation/forms.py:283 +#: participation/forms.py:287 msgid "Spreadsheet file:" msgstr "Fichier tableur :" -#: participation/forms.py:309 +#: participation/forms.py:313 msgid "" "This file contains non-UTF-8 and non-ISO-8859-1 content. Please send your " "sheet as a CSV file." @@ -1096,53 +1109,53 @@ msgstr "" "Ce fichier contient des éléments non-UTF-8 et non-ISO-8859-1. Merci " "d'envoyer votre tableur au format CSV." -#: participation/forms.py:349 +#: participation/forms.py:353 msgid "The following note is higher of the maximum expected value:" msgstr "La note suivante est supérieure au maximum attendu :" -#: participation/forms.py:355 +#: participation/forms.py:359 msgid "The following user was not found:" msgstr "L'utilisateur⋅rice suivant n'a pas été trouvé :" -#: participation/forms.py:371 +#: participation/forms.py:375 msgid "The reporter, the opponent and the reviewer must be different." msgstr "" "Les équipes défenseuse, opposante et rapportrice doivent être différent⋅es." -#: participation/forms.py:375 +#: participation/forms.py:379 msgid "This reporter did not work on this problem." msgstr "Ce⋅tte défenseur⋅se ne travaille pas sur ce problème." -#: participation/forms.py:394 +#: participation/forms.py:398 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:42 +#: participation/models.py:41 msgid "code" msgstr "code" -#: participation/models.py:43 +#: participation/models.py:42 #, python-brace-format msgid "The code must be composed of {nb_letters} uppercase letters." msgstr "Le code doit être composé de {nb_letters} lettres majuscules." -#: participation/models.py:49 +#: participation/models.py:48 msgid "This team code is forbidden." msgstr "Ce code d'équipe est interdit." -#: participation/models.py:55 +#: participation/models.py:54 msgid "access code" msgstr "code d'accès" -#: participation/models.py:56 +#: participation/models.py:55 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:60 +#: participation/models.py:59 msgid "motivation letter" msgstr "lettre de motivation" -#: participation/models.py:109 +#: participation/models.py:108 #, python-brace-format msgid "" "The team {trigram} is not registered to any tournament. You can register the " @@ -1151,11 +1164,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:114 +#: participation/models.py:113 msgid "No tournament" msgstr "Pas de tournoi" -#: participation/models.py:120 +#: participation/models.py:119 msgid "" "Registrations for the tournament of {tournament} are ending on the {date:%Y-" "%m-%d %H:%M}." @@ -1163,11 +1176,11 @@ msgstr "" "Les inscriptions pour le tournoi de {tournament} se terminent le {date:%d/%m/" "%Y %H:%M}." -#: participation/models.py:125 +#: participation/models.py:124 msgid "Registrations closure" msgstr "Clôture des inscriptions" -#: participation/models.py:132 +#: participation/models.py:131 #, python-brace-format msgid "" "The team {trigram} has not uploaded a motivation letter. You can upload your " @@ -1177,11 +1190,11 @@ msgstr "" "envoyer votre lettre de motivation en cliquant sur ce lien." -#: participation/models.py:137 +#: participation/models.py:136 msgid "No motivation letter" msgstr "Pas de lettre de motivation" -#: participation/models.py:146 +#: participation/models.py:145 #, python-brace-format msgid "" "The team {trigram} has less than 4 students ({nb_students}). You can invite " @@ -1191,11 +1204,11 @@ msgstr "" "plus d'élèves à rejoindre l'équipe en utilisant le code d'invitation " "{code}." -#: participation/models.py:151 +#: participation/models.py:150 msgid "Not enough students" msgstr "Pas assez d'élèves" -#: participation/models.py:158 +#: participation/models.py:157 #, python-brace-format msgid "" "The team {trigram} has no coach. You can invite a coach to join the team " @@ -1205,11 +1218,11 @@ msgstr "" "encadrant⋅e à rejoindre l'équipe en utilisant le code d'invitation " "{code}." -#: participation/models.py:162 +#: participation/models.py:161 msgid "No coach" msgstr "Pas d'encadrant⋅e" -#: participation/models.py:169 +#: participation/models.py:168 #, python-brace-format msgid "" "The team {trigram} has more than 6 students ({nb_students}) or more than 2 " @@ -1220,11 +1233,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:174 +#: participation/models.py:173 msgid "Too many members" msgstr "Trop de membres" -#: participation/models.py:181 +#: participation/models.py:180 #, python-brace-format msgid "" "The team {trigram} is ready to be validated. You can request validation on " @@ -1233,11 +1246,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:186 participation/models.py:197 +#: participation/models.py:185 participation/models.py:196 msgid "Validate team" msgstr "Valider l'équipe" -#: participation/models.py:192 +#: participation/models.py:191 #, python-brace-format msgid "" "The team {trigram} has enough participants, but is not ready to be " @@ -1250,7 +1263,7 @@ msgstr "" "documents requis. Pour inviter plus de participant⋅es, utilisez le code " "d'invitation {code}." -#: participation/models.py:203 +#: participation/models.py:202 #, python-brace-format msgid "" "The team {trigram} has not been validated by the organizers yet. Please be " @@ -1259,216 +1272,216 @@ msgstr "" "L'équipe {trigram} n'a pas encore été validée par les organisateurices. " "Merci de patienter." -#: participation/models.py:206 registration/models.py:616 +#: participation/models.py:205 registration/models.py:621 msgid "Pending validation" msgstr "Validation en attente" -#: participation/models.py:250 +#: participation/models.py:249 #, python-brace-format msgid "The team code must be composed of {nb_letters} uppercase letters." msgstr "Le code d'équipe doit être composé de {nb_letters} lettres majuscules." -#: participation/models.py:267 +#: participation/models.py:266 #, python-brace-format msgid "Team {name} ({trigram})" msgstr "Équipe {name} ({trigram})" -#: participation/models.py:286 +#: participation/models.py:285 msgid "start" msgstr "début" -#: participation/models.py:291 +#: participation/models.py:290 msgid "end" msgstr "fin" -#: participation/models.py:296 +#: participation/models.py:295 msgid "unified registration" msgstr "inscription unifiée" -#: participation/models.py:302 +#: participation/models.py:301 #: participation/templates/participation/tournament_detail.html:18 msgid "place" msgstr "lieu" -#: participation/models.py:306 +#: participation/models.py:305 msgid "max team count" msgstr "nombre maximal d'équipes" -#: participation/models.py:311 +#: participation/models.py:310 #: participation/templates/participation/tournament_detail.html:22 msgid "price" msgstr "prix" -#: participation/models.py:316 +#: participation/models.py:315 #: participation/templates/participation/tournament_detail.html:26 msgid "remote" msgstr "à distance" -#: participation/models.py:321 +#: participation/models.py:320 msgid "limit date for registrations" msgstr "date limite d'inscription" -#: participation/models.py:326 +#: participation/models.py:325 msgid "limit date to upload solutions" msgstr "date limite pour envoyer les solutions" -#: participation/models.py:331 +#: participation/models.py:330 msgid "random draw for solutions" msgstr "tirage au sort des solutions" -#: participation/models.py:336 +#: participation/models.py:335 msgid "first phase date" msgstr "date du premier tour" -#: participation/models.py:341 +#: participation/models.py:340 msgid "limit date to upload the written reviews for the first phase" msgstr "date limite pour envoyer les notes de synthèses pour la première phase" -#: participation/models.py:346 +#: participation/models.py:345 msgid "first second date" msgstr "date du second tour" -#: participation/models.py:351 +#: participation/models.py:350 msgid "check this case when solutions for the second round become available" msgstr "" "cocher la case lorsque les solutions pour le second tour sont accessibles" -#: participation/models.py:356 +#: participation/models.py:355 msgid "limit date to upload the written reviews for the second phase" msgstr "date limite d'envoi des notes de synthèse pour la seconde phase" -#: participation/models.py:361 +#: participation/models.py:360 msgid "third phase date" msgstr "date du troisième tour" -#: participation/models.py:366 +#: participation/models.py:365 msgid "check this case when solutions for the third round become available" msgstr "" "cocher la case lorsque les solutions pour le second tour sont accessibles" -#: participation/models.py:371 +#: participation/models.py:370 msgid "limit date to upload the written reviews for the third phase" msgstr "" "date limite pour envoyer les notes de synthèses pour la troisième phase" -#: participation/models.py:376 +#: participation/models.py:375 #: participation/templates/participation/tournament_detail.html:86 msgid "description" msgstr "description" -#: participation/models.py:382 +#: participation/models.py:381 #: participation/templates/participation/tournament_detail.html:12 msgid "organizers" msgstr "organisateur⋅rices" -#: participation/models.py:387 +#: participation/models.py:386 #: participation/templates/participation/team_detail.html:176 msgid "final" msgstr "finale" -#: participation/models.py:395 +#: participation/models.py:394 msgid "Google Sheet ID" msgstr "ID de la feuille Google Sheets" -#: participation/models.py:479 +#: participation/models.py:478 msgid "Notation sheet" msgstr "Feuille de notation" -#: participation/models.py:491 participation/models.py:492 -#: participation/models.py:494 participation/models.py:734 +#: participation/models.py:490 participation/models.py:491 +#: participation/models.py:493 participation/models.py:733 msgid "Final ranking" msgstr "Classement final" -#: participation/models.py:499 participation/models.py:571 -#: participation/models.py:1364 participation/views.py:1776 +#: participation/models.py:498 participation/models.py:570 +#: participation/models.py:1363 participation/views.py:1776 #: survey/templates/survey/survey_detail.html:59 msgid "Team" msgstr "Équipe" -#: participation/models.py:499 +#: participation/models.py:498 msgid "Scores day 1" msgstr "Scores jour 1" -#: participation/models.py:499 +#: participation/models.py:498 msgid "Tweaks day 1" msgstr "Ajustements 1" -#: participation/models.py:500 +#: participation/models.py:499 msgid "Scores day 2" msgstr "Scores jour 2" -#: participation/models.py:500 +#: participation/models.py:499 msgid "Tweaks day 2" msgstr "Ajustements 2" -#: participation/models.py:501 +#: participation/models.py:500 msgid "Total D1 + D2" msgstr "Total J1 + J2" -#: participation/models.py:501 +#: participation/models.py:500 msgid "Scores day 3" msgstr "Scores jour 3" -#: participation/models.py:501 +#: participation/models.py:500 msgid "Tweaks day 3" msgstr "Ajustements 3" -#: participation/models.py:503 participation/models.py:1364 +#: participation/models.py:502 participation/models.py:1363 #: participation/views.py:1783 msgid "Total" msgstr "Total" -#: participation/models.py:503 participation/models.py:571 -#: participation/models.py:1364 +#: participation/models.py:502 participation/models.py:570 +#: participation/models.py:1363 #: participation/templates/participation/tournament_harmonize.html:14 #: participation/views.py:1786 msgid "Rank" msgstr "Rang" -#: participation/models.py:571 participation/models.py:736 +#: participation/models.py:570 participation/models.py:735 msgid "Score" msgstr "Score" -#: participation/models.py:571 +#: participation/models.py:570 msgid "Mention" msgstr "Mention" -#: participation/models.py:716 participation/models.py:1633 +#: participation/models.py:715 participation/models.py:1632 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:802 registration/admin.py:125 +#: participation/models.py:801 registration/admin.py:125 msgid "tournaments" msgstr "tournois" -#: participation/models.py:831 +#: participation/models.py:830 msgid "valid team" msgstr "équipe valide" -#: participation/models.py:832 +#: participation/models.py:831 msgid "The participation got the validation of the organizers." msgstr "La participation a été validée par les organisateur⋅rices." -#: participation/models.py:838 +#: participation/models.py:837 msgid "The team is selected for the final tournament." msgstr "L'équipe est sélectionnée pour la finale." -#: participation/models.py:842 +#: participation/models.py:841 msgid "mention" msgstr "mention" -#: participation/models.py:849 +#: participation/models.py:848 msgid "mention (final)" msgstr "Mention (pour la finale) :" -#: participation/models.py:859 +#: participation/models.py:858 #, python-brace-format msgid "Participation of the team {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})" -#: participation/models.py:868 +#: participation/models.py:867 #, python-brace-format msgid "" "

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

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

" -#: participation/models.py:876 +#: participation/models.py:875 msgid "Missing payments" msgstr "Paiements manquants" -#: participation/models.py:885 registration/models.py:310 +#: participation/models.py:884 registration/models.py:310 #, python-brace-format msgid "" "Please answer to the survey \"{name}\". You can go to the survey on ce lien, en utilisant le " "code que vous avez reçu par mail." -#: participation/models.py:889 registration/models.py:314 +#: participation/models.py:888 registration/models.py:314 msgid "Required answer to survey" msgstr "Réponse requise au questionnaire" -#: participation/models.py:906 +#: participation/models.py:905 msgid "" "

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

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

" -#: participation/models.py:916 participation/models.py:930 +#: participation/models.py:915 participation/models.py:929 msgid "Solutions due" msgstr "Rendu des solutions" -#: participation/models.py:922 +#: participation/models.py:921 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 " @@ -1532,7 +1545,7 @@ msgstr "" "parties.

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

" -#: participation/models.py:936 registration/models.py:641 +#: participation/models.py:935 registration/models.py:646 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." @@ -1542,11 +1555,11 @@ msgstr "" "{date:%d/%m/%Y %H:%M}. Vous pouvez y participer sur ce lien.

" -#: participation/models.py:942 registration/models.py:648 +#: participation/models.py:941 registration/models.py:653 msgid "Draw of solutions" msgstr "Tirage au sort des solutions" -#: participation/models.py:954 +#: participation/models.py:953 #, python-brace-format msgid "" "

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

" -#: participation/models.py:963 participation/models.py:1026 -#: participation/models.py:1090 +#: participation/models.py:962 participation/models.py:1025 +#: participation/models.py:1089 #, 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:972 participation/models.py:1035 -#: participation/models.py:1099 +#: participation/models.py:971 participation/models.py:1034 +#: participation/models.py:1098 #, 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:982 participation/models.py:1045 -#: participation/models.py:1109 +#: participation/models.py:981 participation/models.py:1044 +#: participation/models.py:1108 #, 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:1002 participation/models.py:1065 -#: participation/models.py:1129 +#: participation/models.py:1001 participation/models.py:1064 +#: participation/models.py:1128 #: participation/templates/participation/upload_written_review.html:9 msgid "Templates:" msgstr "Modèles :" -#: participation/models.py:1007 registration/models.py:663 +#: participation/models.py:1006 registration/models.py:668 msgid "First round" msgstr "Premier tour" -#: participation/models.py:1019 +#: participation/models.py:1018 #, python-brace-format msgid "" "

For the second round, you will present your " @@ -1613,12 +1626,12 @@ msgstr "" "

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

" -#: participation/models.py:1070 participation/models.py:1134 -#: registration/models.py:674 +#: participation/models.py:1069 participation/models.py:1133 +#: registration/models.py:679 msgid "Second round" msgstr "Second tour" -#: participation/models.py:1083 +#: participation/models.py:1082 #, python-brace-format msgid "" "

For the third round, you will present your " @@ -1627,7 +1640,7 @@ msgstr "" "

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

" -#: participation/models.py:1140 +#: participation/models.py:1139 #, 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:1145 +#: participation/models.py:1144 msgid "Tournament ended" msgstr "Tournoi terminé" -#: participation/models.py:1170 participation/models.py:1171 -#: participation/models.py:1172 +#: participation/models.py:1169 participation/models.py:1170 +#: participation/models.py:1171 #, python-brace-format msgid "Round {round}" msgstr "Tour {round}" -#: participation/models.py:1186 +#: participation/models.py:1185 msgid "room" msgstr "salle" -#: participation/models.py:1188 +#: participation/models.py:1187 msgid "Room 1" msgstr "Salle 1" -#: participation/models.py:1189 +#: participation/models.py:1188 msgid "Room 2" msgstr "Salle 2" -#: participation/models.py:1192 +#: participation/models.py:1191 msgid "For 5-teams pools only" msgstr "Pour les poules de 5 équipe uniquement" -#: participation/models.py:1204 +#: participation/models.py:1203 msgid "juries" msgstr "jurys" -#: participation/models.py:1213 +#: participation/models.py:1212 msgid "president of the jury" msgstr "président⋅e du jury" -#: participation/models.py:1220 +#: participation/models.py:1219 msgid "BigBlueButton URL" msgstr "Lien BigBlueButton" -#: participation/models.py:1221 +#: participation/models.py:1220 msgid "The link of the BBB visio for this pool." msgstr "Le lien du salon BBB pour cette poule." -#: participation/models.py:1226 +#: participation/models.py:1225 msgid "results available" msgstr "résultats disponibles" -#: participation/models.py:1227 +#: participation/models.py:1226 msgid "" "Check this case when results become accessible to teams. They stay " "accessible to you. Only averages are given." @@ -1691,91 +1704,91 @@ msgstr "" "Ils restent toujours accessibles pour vous. Seules les moyennes sont " "communiquées." -#: participation/models.py:1259 +#: participation/models.py:1258 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:1290 participation/models.py:1364 +#: participation/models.py:1289 participation/models.py:1363 #: participation/views.py:1531 participation/views.py:1780 msgid "Problem" msgstr "Problème" -#: participation/models.py:1291 participation/views.py:1552 +#: participation/models.py:1290 participation/views.py:1552 msgid "Reporter" msgstr "Défenseur⋅se" -#: participation/models.py:1292 participation/views.py:1558 +#: participation/models.py:1291 participation/views.py:1558 msgid "Opponent" msgstr "Opposant⋅e" -#: participation/models.py:1293 participation/views.py:1565 +#: participation/models.py:1292 participation/views.py:1565 msgid "Reviewer" msgstr "Rapporteur⋅rice" -#: participation/models.py:1294 participation/views.py:1572 +#: participation/models.py:1293 participation/views.py:1572 msgid "Observer" msgstr "Observateur⋅rice" -#: participation/models.py:1295 participation/views.py:1546 +#: participation/models.py:1294 participation/views.py:1546 msgid "Role" msgstr "Rôle" -#: participation/models.py:1296 participation/models.py:1298 -#: participation/models.py:1299 +#: participation/models.py:1295 participation/models.py:1297 +#: participation/models.py:1298 msgid "Writing" msgstr "Écrit" -#: participation/models.py:1297 participation/models.py:1298 -#: participation/models.py:1299 +#: participation/models.py:1296 participation/models.py:1297 +#: participation/models.py:1298 msgid "Oral" msgstr "Oral" -#: participation/models.py:1300 participation/views.py:1580 +#: participation/models.py:1299 participation/views.py:1580 #: participation/views.py:1581 msgid "Juree" msgstr "Juré⋅e" -#: participation/models.py:1323 participation/models.py:1653 -#: participation/models.py:1675 participation/views.py:1650 +#: participation/models.py:1322 participation/models.py:1652 +#: participation/models.py:1674 participation/views.py:1650 msgid "Average" msgstr "Moyenne" -#: participation/models.py:1329 participation/views.py:1669 +#: participation/models.py:1328 participation/views.py:1669 msgid "Coefficient" msgstr "Coefficient" -#: participation/models.py:1330 participation/views.py:1712 +#: participation/models.py:1329 participation/views.py:1712 msgid "Subtotal" msgstr "Sous-total" -#: participation/models.py:1596 +#: participation/models.py:1595 #, 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:1688 +#: participation/models.py:1687 #, 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:1701 +#: participation/models.py:1700 #, 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:1721 +#: participation/models.py:1720 msgid "position" msgstr "position" -#: participation/models.py:1728 +#: participation/models.py:1727 msgid "reported solution" msgstr "solution défendue" -#: participation/models.py:1766 +#: participation/models.py:1765 msgid "penalties" msgstr "pénalités" -#: participation/models.py:1768 +#: participation/models.py:1767 msgid "" "Number of penalties for the reporter. The reporter will loose a 0.5 " "coefficient per penalty." @@ -1783,128 +1796,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:1894 participation/models.py:1897 -#: participation/models.py:1900 participation/models.py:1903 +#: participation/models.py:1893 participation/models.py:1896 +#: participation/models.py:1899 participation/models.py:1902 #, 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:1908 +#: participation/models.py:1907 #, python-brace-format msgid "Passage of {reporter} for problem {problem}" msgstr "Passage de {reporter} pour le problème {problem}" -#: participation/models.py:1912 participation/models.py:1921 -#: participation/models.py:2010 participation/models.py:2053 +#: participation/models.py:1911 participation/models.py:1920 +#: participation/models.py:2009 participation/models.py:2052 msgid "passage" msgstr "passage" -#: participation/models.py:1913 +#: participation/models.py:1912 msgid "passages" msgstr "passages" -#: participation/models.py:1932 +#: participation/models.py:1931 msgid "difference" msgstr "différence" -#: participation/models.py:1933 +#: participation/models.py:1932 msgid "Score to add/remove on the final score" msgstr "Score à ajouter/retrancher au score final" -#: participation/models.py:1940 +#: participation/models.py:1939 msgid "tweak" msgstr "harmonisation" -#: participation/models.py:1941 +#: participation/models.py:1940 msgid "tweaks" msgstr "harmonisations" -#: participation/models.py:1973 +#: participation/models.py:1972 msgid "solution for the final tournament" msgstr "solution pour la finale" -#: participation/models.py:1978 participation/models.py:2022 +#: participation/models.py:1977 participation/models.py:2021 msgid "file" msgstr "fichier" -#: participation/models.py:1988 +#: participation/models.py:1987 #, 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:1990 +#: participation/models.py:1989 msgid "for final" msgstr "pour la finale" -#: participation/models.py:1993 +#: participation/models.py:1992 msgid "solution" msgstr "solution" -#: participation/models.py:1994 +#: participation/models.py:1993 msgid "solutions" msgstr "solutions" -#: participation/models.py:2028 +#: participation/models.py:2027 #, python-brace-format msgid "Written review of {team} as {type} for problem {problem} of {reporter}" msgstr "" "Note de synthèse de l'équipe {team} en tant que {type} pour le problème " "{problem} de {reporter}" -#: participation/models.py:2036 +#: participation/models.py:2035 msgid "written review" msgstr "note de synthèse" -#: participation/models.py:2037 +#: participation/models.py:2036 msgid "written reviews" msgstr "notes de synthèse" -#: participation/models.py:2046 +#: participation/models.py:2045 msgid "jury" msgstr "jury" -#: participation/models.py:2058 +#: participation/models.py:2057 msgid "reporter writing note" msgstr "note d'écrit défenseur⋅se" -#: participation/models.py:2064 +#: participation/models.py:2063 msgid "reporter oral note" msgstr "note d'oral défenseur⋅se" -#: participation/models.py:2070 +#: participation/models.py:2069 msgid "opponent writing note" msgstr "note d'écrit opposant⋅e" -#: participation/models.py:2076 +#: participation/models.py:2075 msgid "opponent oral note" msgstr "note d'oral opposant⋅e" -#: participation/models.py:2082 +#: participation/models.py:2081 msgid "reviewer writing note" msgstr "note d'écrit rapporteur⋅rice" -#: participation/models.py:2088 +#: participation/models.py:2087 msgid "reviewer oral note" msgstr "note d'oral du rapporteur⋅rice" -#: participation/models.py:2094 +#: participation/models.py:2093 msgid "observer writing note" msgstr "note d'écrit de l'observateur⋅rice" -#: participation/models.py:2100 +#: participation/models.py:2099 msgid "observer oral note" msgstr "note d'oral de l'observateur⋅rice" -#: participation/models.py:2165 +#: participation/models.py:2164 #, python-brace-format msgid "Notes of {jury} for {passage}" msgstr "Notes de {jury} pour le {passage}" -#: participation/models.py:2168 +#: participation/models.py:2167 msgid "note" msgstr "note" -#: participation/models.py:2169 +#: participation/models.py:2168 msgid "notes" msgstr "notes" @@ -2394,7 +2407,7 @@ msgid "Payment of" msgstr "Paiement de" #: participation/templates/participation/team_detail.html:175 -#: registration/models.py:718 +#: registration/models.py:723 msgid "grouped" msgstr "groupé" @@ -2689,7 +2702,7 @@ msgid "Archive of all printable note sheets sorted by pool" msgstr "Archive de toutes les fiches de notes imprimables triées par poule" #: participation/templates/participation/tournament_harmonize.html:16 -#: registration/models.py:689 +#: registration/models.py:694 msgid "Note" msgstr "Note" @@ -2990,7 +3003,7 @@ msgid "Mark as invalid" msgstr "Marquer comme invalide" #: registration/apps.py:14 registration/models.py:133 -#: registration/models.py:714 +#: registration/models.py:719 msgid "registrations" msgstr "inscriptions" @@ -3002,7 +3015,7 @@ msgstr "rôle" msgid "participant" msgstr "participant⋅e" -#: registration/forms.py:26 registration/models.py:550 +#: registration/forms.py:26 registration/models.py:555 msgid "coach" msgstr "encadrant⋅e" @@ -3311,7 +3324,7 @@ msgstr "" "Votre dernier diplôme en mathématiques, informatique ou physique, ou votre " "dernier concours obtenu (CAPES, Agrégation, …)" -#: registration/models.py:528 registration/models.py:567 +#: registration/models.py:528 registration/models.py:572 msgid "professional activity" msgstr "activité professionnelle" @@ -3324,9 +3337,10 @@ msgid "" "Provides scientific guidance: methodology, content review, and project " "mentoring during the preparation phase." msgstr "" -"Suit l'équipe tout au long de la phase de préparation et les encadre scientifiquement en accord avec le règlement." +"Suit l'équipe tout au long de la phase de préparation et les encadre " +"scientifiquement en accord avec le règlement." -#: registration/models.py:538 +#: registration/models.py:538 registration/models.py:549 msgid "see practical sheet" msgstr "Voir fiche pratique" @@ -3334,24 +3348,26 @@ msgstr "Voir fiche pratique" msgid "Accompanying coach" msgstr "Accompagnateur" -#: registration/models.py:545 +#: registration/models.py:547 msgid "" "Accompanies the team during the weekend and stays for the entire tournament." -msgstr "Accompagne l'équipe durant le week-end et s'engage à y rester tout le tournoi." +msgstr "" +"Accompagne l'équipe durant le week-end et s'engage à y rester tout le " +"tournoi." -#: registration/models.py:558 +#: registration/models.py:563 msgid "coach registration" msgstr "inscription d'encadrant⋅e" -#: registration/models.py:559 +#: registration/models.py:564 msgid "coach registrations" msgstr "inscriptions d'encadrant⋅es" -#: registration/models.py:571 +#: registration/models.py:576 msgid "administrator" msgstr "administrateur⋅rice" -#: registration/models.py:572 +#: registration/models.py:577 msgid "" "An administrator has all rights. Please don't give this right to all juries " "and volunteers." @@ -3359,15 +3375,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:582 +#: registration/models.py:587 msgid "admin" msgstr "admin" -#: registration/models.py:582 +#: registration/models.py:587 msgid "volunteer" msgstr "bénévole" -#: registration/models.py:595 +#: registration/models.py:600 msgid "" "Registrations for tournament {tournament} are closing on {date:%Y-%m-%d %H:" "%M}. There are for now {validated_teams} validated teams (+ {pending_teams} " @@ -3377,11 +3393,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:603 +#: registration/models.py:608 msgid "Registrations" msgstr "Inscriptions" -#: registration/models.py:610 +#: registration/models.py:615 #, python-brace-format msgid "" "The team {trigram} requested to be validated for the tournament of " @@ -3392,7 +3408,7 @@ msgstr "" "Vous pouvez vérifier le statut de l'équipe sur la page de " "l'équipe." -#: registration/models.py:627 +#: registration/models.py:632 #, python-brace-format msgid "" "There are {valid} validated payments, {pending} pending and {invalid} " @@ -3403,11 +3419,11 @@ msgstr "" "invalides pour le tournoi {tournament}. Vous pouvez vérifier le statut des " "paiements sur la liste des paiements." -#: registration/models.py:634 +#: registration/models.py:639 msgid "Payments" msgstr "Paiements" -#: registration/models.py:658 registration/models.py:669 +#: registration/models.py:663 registration/models.py:674 #, python-brace-format msgid "" "

You are in the jury of the pool {pool} for the tournament of " @@ -3416,7 +3432,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:682 +#: registration/models.py:687 #, python-brace-format msgid "" "

You don't have given any note as a jury for the passage {passage} in the " @@ -3427,15 +3443,15 @@ msgstr "" "{passage} dans la poule {pool} de {tournament}. Vous pouvez donner vos notes " "ici.

" -#: registration/models.py:698 +#: registration/models.py:703 msgid "volunteer registration" msgstr "inscription de bénévole" -#: registration/models.py:699 +#: registration/models.py:704 msgid "volunteer registrations" msgstr "inscriptions de bénévoles" -#: registration/models.py:720 +#: registration/models.py:725 msgid "" "If set to true, then one payment is made for the full team, for example if " "the school pays for all." @@ -3443,100 +3459,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:725 +#: registration/models.py:730 msgid "total amount" msgstr "montant total" -#: registration/models.py:726 +#: registration/models.py:731 msgid "Corresponds to the total required amount to pay, in euros." msgstr "Correspond au montant total à payer, en euros." -#: registration/models.py:731 +#: registration/models.py:736 msgid "token" msgstr "jeton" -#: registration/models.py:734 +#: registration/models.py:739 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:738 +#: registration/models.py:743 msgid "for final tournament" msgstr "pour la finale" -#: registration/models.py:743 +#: registration/models.py:748 msgid "type" msgstr "type" -#: registration/models.py:746 +#: registration/models.py:751 msgid "No payment" msgstr "Pas de paiement" -#: registration/models.py:747 +#: registration/models.py:752 #: registration/templates/registration/payment_form.html:72 msgid "Credit card" msgstr "Carte bancaire" -#: registration/models.py:748 +#: registration/models.py:753 msgid "Scholarship" msgstr "Notification de bourse" -#: registration/models.py:749 +#: registration/models.py:754 #: registration/templates/registration/payment_form.html:77 msgid "Bank transfer" msgstr "Virement bancaire" -#: registration/models.py:750 +#: registration/models.py:755 msgid "Other (please indicate)" msgstr "Autre (veuillez spécifier)" -#: registration/models.py:751 +#: registration/models.py:756 msgid "The tournament is free" msgstr "Le tournoi est gratuit" -#: registration/models.py:758 +#: registration/models.py:763 msgid "Hello Asso checkout intent ID" msgstr "ID de l'intention de paiement Hello Asso" -#: registration/models.py:765 +#: registration/models.py:770 msgid "receipt" msgstr "justificatif" -#: registration/models.py:766 +#: registration/models.py:771 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:773 +#: registration/models.py:778 msgid "additional information" msgstr "informations additionnelles" -#: registration/models.py:774 +#: registration/models.py:779 msgid "To help us to find your payment." msgstr "Pour nous aider à retrouver votre paiement, si nécessaire." -#: registration/models.py:780 +#: registration/models.py:785 msgid "payment valid" msgstr "paiement valide" -#: registration/models.py:840 +#: registration/models.py:845 msgid "Reminder for your payment" msgstr "Rappel pour votre paiement" -#: registration/models.py:851 +#: registration/models.py:856 msgid "Payment confirmation" msgstr "Confirmation de paiement" -#: registration/models.py:873 +#: registration/models.py:878 #, python-brace-format msgid "Payment of {registrations}" msgstr "Paiements de {registrations}" -#: registration/models.py:876 +#: registration/models.py:881 msgid "payment" msgstr "paiement" -#: registration/models.py:877 +#: registration/models.py:882 msgid "payments" msgstr "paiements" @@ -4894,31 +4910,3 @@ msgstr "Aucun résultat." #: tfjm/templates/sidebar.html:10 tfjm/templates/sidebar.html:21 msgid "Informations" msgstr "Informations" - -#~ msgid "" -#~ "For the tournaments in the region \"Île-de-France\": registration is\n" -#~ "unified for each tournament. By choosing a tournament \"Île-de-France\",\n" -#~ "you're accepting that your team may be selected for one of these " -#~ "tournaments.\n" -#~ "In case of date conflict, please write them in your motivation letter." -#~ msgstr "" -#~ "Pour les tournois franciliens : l'inscription est unifiée pour chacun des " -#~ "tournois. En choisissant un tournoi « Île-de-France », vous acceptez que " -#~ "votre équipe puisse être sélectionnée pour l'un des tournois concernés. " -#~ "En cas de contraintes de date, merci de les indiquer dans votre lettre de " -#~ "motivation." - -#~ msgid "Pool" -#~ msgstr "Poule" - -#~ msgid "Coaches:" -#~ msgstr "Encadrant⋅es :" - -#~ msgid "Team validation" -#~ msgstr "Validation d'équipe" - -#~ msgid "Team validated" -#~ msgstr "Équipe validée" - -#~ msgid "Team not validated" -#~ msgstr "Équipe non validée" diff --git a/participation/forms.py b/participation/forms.py index c677db9..24582a8 100644 --- a/participation/forms.py +++ b/participation/forms.py @@ -80,13 +80,17 @@ class ParticipationForm(forms.ModelForm): if settings.SINGLE_TOURNAMENT: del self.fields['tournament'] self.helper = FormHelper() + idf_text = _( + 'For the tournaments in the region "Île-de-France": registration is ' + 'unified for each tournament. By choosing a tournament "Île-de-France", ' + "you're accepting that your team may be selected for one of these tournaments. " + 'In case of date conflict, please write them in your motivation letter.' + ) + idf_warning_banner = f"""
{_("IMPORTANT")}
-{_("""For the tournaments in the region "Île-de-France": registration is -unified for each tournament. By choosing a tournament "Île-de-France", -you're accepting that your team may be selected for one of these tournaments. -In case of date conflict, please write them in your motivation letter.""")} +{idf_text}
""" unified_registration_tournament_ids = ",".join( diff --git a/participation/models.py b/participation/models.py index 290cad4..a1d8645 100644 --- a/participation/models.py +++ b/participation/models.py @@ -70,11 +70,11 @@ class Team(models.Model): @property def coaches(self): return self.participants.filter(coachregistration__isnull=False) - + @property def scientific_coaches(self): return self.participants.filter(coachregistration__isnull=False, coachregistration__is_scientific_coach=True) - + @property def accompanying_coaches(self): return self.participants.filter(coachregistration__isnull=False, coachregistration__is_accompanying_coach=True) @@ -219,7 +219,6 @@ class Team(models.Model): :return: The mailing list to contact the team members. """ return f"equipe-{slugify(self.trigram)}@{settings.SYMPA_HOST}" - def create_mailing_list(self): """ diff --git a/registration/forms.py b/registration/forms.py index 1b2ef33..f975013 100644 --- a/registration/forms.py +++ b/registration/forms.py @@ -251,8 +251,6 @@ class CoachRegistrationForm(forms.ModelForm): """ A coach can tell its professional activity. """ - - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/registration/models.py b/registration/models.py index e52c1d8..fd82421 100644 --- a/registration/models.py +++ b/registration/models.py @@ -14,6 +14,8 @@ from django.urls import reverse, reverse_lazy from django.utils import timezone, translation from django.utils.crypto import get_random_string from django.utils.encoding import force_bytes +from django.utils.functional import lazy +from django.utils.html import format_html from django.utils.http import urlsafe_base64_encode from django.utils.text import format_lazy from django.utils.timezone import localtime @@ -22,7 +24,8 @@ from phonenumber_field.modelfields import PhoneNumberField from polymorphic.models import PolymorphicModel from tfjm import helloasso from tfjm.tokens import email_validation_token -from django.utils.html import format_html + +format_html_lazy = lazy(format_html, str) class Registration(PolymorphicModel): @@ -531,7 +534,7 @@ class CoachRegistration(ParticipantRegistration): is_scientific_coach = models.BooleanField( default=False, verbose_name=_("Scientific coach"), - help_text=format_html( + help_text=format_html_lazy( '{} {}.', _("Provides scientific guidance: methodology, content review, and project mentoring during the preparation phase."), "https://tfjm.org/wp-content/uploads/2024/01/note____l_intention_des_encadrants.pdf", @@ -542,9 +545,14 @@ class CoachRegistration(ParticipantRegistration): is_accompanying_coach = models.BooleanField( default=False, verbose_name=_("Accompanying coach"), - help_text=_("Accompanies the team during the weekend and stays for the entire tournament."), + help_text=format_html_lazy( + '{} {}.', + _("Accompanies the team during the weekend and stays for the entire tournament."), + "https://tfjm.org/wp-content/uploads/2025/11/Fiches_pratiques_TFJM2.pdf", + _("see practical sheet"), + ) ) - + @property def type(self): return _("coach")