diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index aa8b697..3dcfb76 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-04-28 22:00+0200\n" +"POT-Creation-Date: 2025-11-07 11:02+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:272 +#: chat/models.py:29 participation/models.py:36 participation/models.py:281 #: 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:792 -#: participation/models.py:816 participation/models.py:1155 -#: registration/models.py:779 +#: participation/admin.py:203 participation/models.py:801 +#: participation/models.py:825 participation/models.py:1164 +#: registration/models.py:797 #: 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:1698 participation/models.py:1707 +#: participation/models.py:1707 participation/models.py:1716 #: 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:261 -#: participation/models.py:807 +#: participation/admin.py:199 participation/models.py:270 +#: participation/models.py:816 #: participation/templates/participation/tournament_harmonize.html:15 -#: registration/models.py:159 registration/models.py:770 +#: registration/models.py:160 registration/models.py:788 #: 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:262 +#: participation/admin.py:116 participation/models.py:271 #: participation/tables.py:89 msgid "teams" msgstr "équipes" #: draw/admin.py:92 draw/models.py:245 draw/models.py:465 -#: participation/models.py:1159 +#: participation/models.py:1168 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:1167 +#: draw/models.py:268 participation/models.py:1176 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:1699 +#: draw/models.py:447 participation/models.py:1708 msgid "pools" msgstr "poules" -#: draw/models.py:459 participation/models.py:1145 participation/models.py:1918 -#: participation/models.py:1952 participation/models.py:1994 +#: draw/models.py:459 participation/models.py:1154 participation/models.py:1927 +#: participation/models.py:1961 participation/models.py:2003 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:1280 -#: participation/models.py:1721 participation/models.py:1959 +#: draw/models.py:496 draw/models.py:519 participation/models.py:1289 +#: participation/models.py:1730 participation/models.py:1968 #: participation/views.py:1537 participation/views.py:1802 #, python-brace-format msgid "Problem #{problem}" @@ -922,7 +922,7 @@ msgstr "Vous n'êtes pas dans une équipe." msgid "Logs" msgstr "Logs" -#: logs/models.py:22 registration/models.py:36 +#: logs/models.py:22 registration/models.py:37 msgid "user" msgstr "utilisateur" @@ -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:828 +#: participation/admin.py:94 participation/models.py:837 msgid "selected for final" msgstr "sélectionnée pour la finale" #: participation/admin.py:128 participation/admin.py:215 -#: participation/models.py:1728 participation/tables.py:118 +#: participation/models.py:1737 participation/tables.py:113 msgid "reporter" msgstr "défenseur⋅se" -#: participation/admin.py:132 participation/models.py:1735 -#: participation/models.py:2006 +#: participation/admin.py:132 participation/models.py:1744 +#: participation/models.py:2015 msgid "opponent" msgstr "opposant⋅e" -#: participation/admin.py:136 participation/models.py:1742 -#: participation/models.py:2007 +#: participation/admin.py:136 participation/models.py:1751 +#: participation/models.py:2016 msgid "reviewer" msgstr "rapporteur⋅rice" -#: participation/admin.py:140 participation/models.py:1749 -#: participation/models.py:2008 +#: participation/admin.py:140 participation/models.py:1758 +#: participation/models.py:2017 msgid "observer" msgstr "observateur⋅rice" -#: participation/admin.py:219 participation/models.py:1957 +#: participation/admin.py:219 participation/models.py:1966 msgid "problem" msgstr "numéro de problème" -#: participation/apps.py:14 participation/models.py:1146 -#: participation/models.py:1189 +#: participation/apps.py:14 participation/models.py:1155 +#: participation/models.py:1198 msgid "participations" msgstr "participations" @@ -1040,38 +1040,19 @@ 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:85 -#: participation/templates/participation/tournament_detail.html:247 -msgid "IMPORTANT" -msgstr "IMPORTANT" - -#: participation/forms.py:86 -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." - #: participation/forms.py:115 participation/forms.py:388 #: registration/forms.py:126 registration/forms.py:148 #: registration/forms.py:170 registration/forms.py:192 #: registration/forms.py:214 registration/forms.py:236 -#: registration/forms.py:295 registration/forms.py:328 +#: registration/forms.py:298 registration/forms.py:331 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 #: registration/forms.py:150 registration/forms.py:172 #: registration/forms.py:194 registration/forms.py:216 -#: registration/forms.py:238 registration/forms.py:297 -#: registration/forms.py:330 +#: registration/forms.py:238 registration/forms.py:300 +#: registration/forms.py:333 msgid "The uploaded file must be a PDF, PNG of JPEG file." msgstr "Le fichier envoyé doit être au format PDF, PNG ou JPEG." @@ -1161,7 +1142,7 @@ msgstr "Le code d'accès permet aux autres participants de rejoindre l'équipe." msgid "motivation letter" msgstr "lettre de motivation" -#: participation/models.py:101 +#: participation/models.py:109 #, python-brace-format msgid "" "The team {trigram} is not registered to any tournament. You can register the " @@ -1170,11 +1151,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:106 +#: participation/models.py:114 msgid "No tournament" msgstr "Pas de tournoi" -#: participation/models.py:112 +#: participation/models.py:120 msgid "" "Registrations for the tournament of {tournament} are ending on the {date:%Y-" "%m-%d %H:%M}." @@ -1182,11 +1163,11 @@ msgstr "" "Les inscriptions pour le tournoi de {tournament} se terminent le {date:%d/%m/" "%Y %H:%M}." -#: participation/models.py:117 +#: participation/models.py:125 msgid "Registrations closure" msgstr "Clôture des inscriptions" -#: participation/models.py:124 +#: participation/models.py:132 #, python-brace-format msgid "" "The team {trigram} has not uploaded a motivation letter. You can upload your " @@ -1196,11 +1177,11 @@ msgstr "" "envoyer votre lettre de motivation en cliquant sur ce lien." -#: participation/models.py:129 +#: participation/models.py:137 msgid "No motivation letter" msgstr "Pas de lettre de motivation" -#: participation/models.py:138 +#: participation/models.py:146 #, python-brace-format msgid "" "The team {trigram} has less than 4 students ({nb_students}). You can invite " @@ -1210,11 +1191,11 @@ msgstr "" "plus d'élèves à rejoindre l'équipe en utilisant le code d'invitation " "{code}." -#: participation/models.py:143 +#: participation/models.py:151 msgid "Not enough students" msgstr "Pas assez d'élèves" -#: participation/models.py:150 +#: participation/models.py:158 #, python-brace-format msgid "" "The team {trigram} has no coach. You can invite a coach to join the team " @@ -1224,11 +1205,11 @@ msgstr "" "encadrant⋅e à rejoindre l'équipe en utilisant le code d'invitation " "{code}." -#: participation/models.py:154 +#: participation/models.py:162 msgid "No coach" msgstr "Pas d'encadrant⋅e" -#: participation/models.py:161 +#: participation/models.py:169 #, python-brace-format msgid "" "The team {trigram} has more than 6 students ({nb_students}) or more than 2 " @@ -1239,11 +1220,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:166 +#: participation/models.py:174 msgid "Too many members" msgstr "Trop de membres" -#: participation/models.py:173 +#: participation/models.py:181 #, python-brace-format msgid "" "The team {trigram} is ready to be validated. You can request validation on " @@ -1252,11 +1233,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:178 participation/models.py:189 +#: participation/models.py:186 participation/models.py:197 msgid "Validate team" msgstr "Valider l'équipe" -#: participation/models.py:184 +#: participation/models.py:192 #, python-brace-format msgid "" "The team {trigram} has enough participants, but is not ready to be " @@ -1269,7 +1250,7 @@ msgstr "" "documents requis. Pour inviter plus de participant⋅es, utilisez le code " "d'invitation {code}." -#: participation/models.py:195 +#: participation/models.py:203 #, python-brace-format msgid "" "The team {trigram} has not been validated by the organizers yet. Please be " @@ -1278,227 +1259,216 @@ msgstr "" "L'équipe {trigram} n'a pas encore été validée par les organisateurices. " "Merci de patienter." -#: participation/models.py:198 registration/models.py:598 +#: participation/models.py:206 registration/models.py:616 msgid "Pending validation" msgstr "Validation en attente" -#: participation/models.py:241 +#: participation/models.py:250 #, 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:258 +#: participation/models.py:267 #, python-brace-format msgid "Team {name} ({trigram})" msgstr "Équipe {name} ({trigram})" -#: participation/models.py:277 +#: participation/models.py:286 msgid "start" msgstr "début" -#: participation/models.py:282 +#: participation/models.py:291 msgid "end" msgstr "fin" -#: participation/models.py:287 +#: participation/models.py:296 msgid "unified registration" msgstr "inscription unifiée" -#: participation/models.py:293 +#: participation/models.py:302 #: participation/templates/participation/tournament_detail.html:18 msgid "place" msgstr "lieu" -#: participation/models.py:297 +#: participation/models.py:306 msgid "max team count" msgstr "nombre maximal d'équipes" -#: participation/models.py:302 +#: participation/models.py:311 #: participation/templates/participation/tournament_detail.html:22 msgid "price" msgstr "prix" -#: participation/models.py:307 +#: participation/models.py:316 #: participation/templates/participation/tournament_detail.html:26 msgid "remote" msgstr "à distance" -#: participation/models.py:312 +#: participation/models.py:321 msgid "limit date for registrations" msgstr "date limite d'inscription" -#: participation/models.py:317 +#: participation/models.py:326 msgid "limit date to upload solutions" msgstr "date limite pour envoyer les solutions" -#: participation/models.py:322 +#: participation/models.py:331 msgid "random draw for solutions" msgstr "tirage au sort des solutions" -#: participation/models.py:327 +#: participation/models.py:336 msgid "first phase date" msgstr "date du premier tour" -#: participation/models.py:332 +#: participation/models.py:341 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:337 +#: participation/models.py:346 msgid "first second date" msgstr "date du second tour" -#: participation/models.py:342 +#: participation/models.py:351 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:347 +#: participation/models.py:356 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:352 +#: participation/models.py:361 msgid "third phase date" msgstr "date du troisième tour" -#: participation/models.py:357 +#: participation/models.py:366 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:362 +#: participation/models.py:371 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:367 +#: participation/models.py:376 #: participation/templates/participation/tournament_detail.html:86 msgid "description" msgstr "description" -#: participation/models.py:373 +#: participation/models.py:382 #: participation/templates/participation/tournament_detail.html:12 msgid "organizers" msgstr "organisateur⋅rices" -#: participation/models.py:378 -#: participation/templates/participation/team_detail.html:167 +#: participation/models.py:387 +#: participation/templates/participation/team_detail.html:176 msgid "final" msgstr "finale" -#: participation/models.py:386 +#: participation/models.py:395 msgid "Google Sheet ID" msgstr "ID de la feuille Google Sheets" -#: participation/models.py:470 participation/views.py:1856 +#: participation/models.py:479 msgid "Notation sheet" msgstr "Feuille de notation" -#: participation/models.py:482 participation/models.py:483 -#: participation/models.py:485 participation/models.py:725 +#: participation/models.py:491 participation/models.py:492 +#: participation/models.py:494 participation/models.py:734 msgid "Final ranking" msgstr "Classement final" -#: participation/models.py:490 participation/models.py:562 -#: participation/models.py:1355 participation/views.py:1776 +#: participation/models.py:499 participation/models.py:571 +#: participation/models.py:1364 participation/views.py:1776 #: survey/templates/survey/survey_detail.html:59 msgid "Team" msgstr "Équipe" -#: participation/models.py:490 +#: participation/models.py:499 msgid "Scores day 1" msgstr "Scores jour 1" -#: participation/models.py:490 +#: participation/models.py:499 msgid "Tweaks day 1" msgstr "Ajustements 1" -#: participation/models.py:491 +#: participation/models.py:500 msgid "Scores day 2" msgstr "Scores jour 2" -#: participation/models.py:491 +#: participation/models.py:500 msgid "Tweaks day 2" msgstr "Ajustements 2" -#: participation/models.py:492 +#: participation/models.py:501 msgid "Total D1 + D2" msgstr "Total J1 + J2" -#: participation/models.py:492 +#: participation/models.py:501 msgid "Scores day 3" msgstr "Scores jour 3" -#: participation/models.py:492 +#: participation/models.py:501 msgid "Tweaks day 3" msgstr "Ajustements 3" -#: participation/models.py:494 participation/models.py:1355 +#: participation/models.py:503 participation/models.py:1364 #: participation/views.py:1783 msgid "Total" msgstr "Total" -#: participation/models.py:494 participation/models.py:562 -#: participation/models.py:1355 +#: participation/models.py:503 participation/models.py:571 +#: participation/models.py:1364 #: participation/templates/participation/tournament_harmonize.html:14 #: participation/views.py:1786 msgid "Rank" msgstr "Rang" -#: participation/models.py:511 participation/models.py:525 -#: participation/models.py:542 participation/models.py:1271 -#: participation/models.py:1272 participation/models.py:1275 -#: participation/models.py:1378 participation/models.py:1380 -#: participation/models.py:1382 participation/models.py:1389 -#: participation/models.py:1393 participation/models.py:1642 -#: participation/models.py:1664 participation/models.py:2128 -#: participation/views.py:1857 -msgid "Pool" -msgstr "Poule" - -#: participation/models.py:562 participation/models.py:727 +#: participation/models.py:571 participation/models.py:736 msgid "Score" msgstr "Score" -#: participation/models.py:562 +#: participation/models.py:571 msgid "Mention" msgstr "Mention" -#: participation/models.py:707 participation/models.py:1624 +#: participation/models.py:716 participation/models.py:1633 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:793 registration/admin.py:125 +#: participation/models.py:802 registration/admin.py:125 msgid "tournaments" msgstr "tournois" -#: participation/models.py:822 +#: participation/models.py:831 msgid "valid team" msgstr "équipe valide" -#: participation/models.py:823 +#: participation/models.py:832 msgid "The participation got the validation of the organizers." msgstr "La participation a été validée par les organisateur⋅rices." -#: participation/models.py:829 +#: participation/models.py:838 msgid "The team is selected for the final tournament." msgstr "L'équipe est sélectionnée pour la finale." -#: participation/models.py:833 +#: participation/models.py:842 msgid "mention" msgstr "mention" -#: participation/models.py:840 +#: participation/models.py:849 msgid "mention (final)" msgstr "Mention (pour la finale) :" -#: participation/models.py:850 +#: participation/models.py:859 #, python-brace-format msgid "Participation of the team {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})" -#: participation/models.py:859 +#: participation/models.py:868 #, python-brace-format msgid "" "

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

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

" -#: participation/models.py:867 +#: participation/models.py:876 msgid "Missing payments" msgstr "Paiements manquants" -#: participation/models.py:876 registration/models.py:309 +#: participation/models.py:885 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:880 registration/models.py:313 +#: participation/models.py:889 registration/models.py:314 msgid "Required answer to survey" msgstr "Réponse requise au questionnaire" -#: participation/models.py:897 +#: participation/models.py:906 msgid "" "

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

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

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

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

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

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

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

" -#: participation/models.py:954 participation/models.py:1017 -#: participation/models.py:1081 +#: participation/models.py:963 participation/models.py:1026 +#: participation/models.py:1090 #, 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:963 participation/models.py:1026 -#: participation/models.py:1090 +#: participation/models.py:972 participation/models.py:1035 +#: participation/models.py:1099 #, 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:973 participation/models.py:1036 -#: participation/models.py:1100 +#: participation/models.py:982 participation/models.py:1045 +#: participation/models.py:1109 #, 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:993 participation/models.py:1056 -#: participation/models.py:1120 +#: participation/models.py:1002 participation/models.py:1065 +#: participation/models.py:1129 #: participation/templates/participation/upload_written_review.html:9 msgid "Templates:" msgstr "Modèles :" -#: participation/models.py:998 registration/models.py:645 +#: participation/models.py:1007 registration/models.py:663 msgid "First round" msgstr "Premier tour" -#: participation/models.py:1010 +#: participation/models.py:1019 #, python-brace-format msgid "" "

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

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

" -#: participation/models.py:1061 participation/models.py:1125 -#: registration/models.py:656 +#: participation/models.py:1070 participation/models.py:1134 +#: registration/models.py:674 msgid "Second round" msgstr "Second tour" -#: participation/models.py:1074 +#: participation/models.py:1083 #, python-brace-format msgid "" "

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

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

" -#: participation/models.py:1131 +#: participation/models.py:1140 #, 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:1136 +#: participation/models.py:1145 msgid "Tournament ended" msgstr "Tournoi terminé" -#: participation/models.py:1161 participation/models.py:1162 -#: participation/models.py:1163 +#: participation/models.py:1170 participation/models.py:1171 +#: participation/models.py:1172 #, python-brace-format msgid "Round {round}" msgstr "Tour {round}" -#: participation/models.py:1177 +#: participation/models.py:1186 msgid "room" msgstr "salle" -#: participation/models.py:1179 +#: participation/models.py:1188 msgid "Room 1" msgstr "Salle 1" -#: participation/models.py:1180 +#: participation/models.py:1189 msgid "Room 2" msgstr "Salle 2" -#: participation/models.py:1183 +#: participation/models.py:1192 msgid "For 5-teams pools only" msgstr "Pour les poules de 5 équipe uniquement" -#: participation/models.py:1195 +#: participation/models.py:1204 msgid "juries" msgstr "jurys" -#: participation/models.py:1204 +#: participation/models.py:1213 msgid "president of the jury" msgstr "président⋅e du jury" -#: participation/models.py:1211 +#: participation/models.py:1220 msgid "BigBlueButton URL" msgstr "Lien BigBlueButton" -#: participation/models.py:1212 +#: participation/models.py:1221 msgid "The link of the BBB visio for this pool." msgstr "Le lien du salon BBB pour cette poule." -#: participation/models.py:1217 +#: participation/models.py:1226 msgid "results available" msgstr "résultats disponibles" -#: participation/models.py:1218 +#: participation/models.py:1227 msgid "" "Check this case when results become accessible to teams. They stay " "accessible to you. Only averages are given." @@ -1721,95 +1691,91 @@ msgstr "" "Ils restent toujours accessibles pour vous. Seules les moyennes sont " "communiquées." -#: participation/models.py:1250 +#: participation/models.py:1259 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:1281 participation/models.py:1355 +#: participation/models.py:1290 participation/models.py:1364 #: participation/views.py:1531 participation/views.py:1780 msgid "Problem" msgstr "Problème" -#: participation/models.py:1282 participation/views.py:1552 +#: participation/models.py:1291 participation/views.py:1552 msgid "Reporter" msgstr "Défenseur⋅se" -#: participation/models.py:1283 participation/views.py:1558 +#: participation/models.py:1292 participation/views.py:1558 msgid "Opponent" msgstr "Opposant⋅e" -#: participation/models.py:1284 participation/views.py:1565 +#: participation/models.py:1293 participation/views.py:1565 msgid "Reviewer" msgstr "Rapporteur⋅rice" -#: participation/models.py:1285 participation/views.py:1572 +#: participation/models.py:1294 participation/views.py:1572 msgid "Observer" msgstr "Observateur⋅rice" -#: participation/models.py:1286 participation/views.py:1546 +#: participation/models.py:1295 participation/views.py:1546 msgid "Role" msgstr "Rôle" -#: participation/models.py:1287 participation/models.py:1289 -#: participation/models.py:1290 participation/views.py:1588 -#: participation/views.py:1596 participation/views.py:1604 -#: participation/views.py:1614 +#: participation/models.py:1296 participation/models.py:1298 +#: participation/models.py:1299 msgid "Writing" msgstr "Écrit" -#: participation/models.py:1288 participation/models.py:1289 -#: participation/models.py:1290 participation/views.py:1592 -#: participation/views.py:1600 participation/views.py:1609 -#: participation/views.py:1618 +#: participation/models.py:1297 participation/models.py:1298 +#: participation/models.py:1299 msgid "Oral" msgstr "Oral" -#: participation/models.py:1291 participation/views.py:1580 +#: participation/models.py:1300 participation/views.py:1580 #: participation/views.py:1581 msgid "Juree" msgstr "Juré⋅e" -#: participation/models.py:1314 participation/models.py:1644 -#: participation/models.py:1666 participation/views.py:1650 +#: participation/models.py:1323 participation/models.py:1653 +#: participation/models.py:1675 participation/views.py:1650 msgid "Average" msgstr "Moyenne" -#: participation/models.py:1320 participation/views.py:1669 +#: participation/models.py:1329 participation/views.py:1669 msgid "Coefficient" msgstr "Coefficient" -#: participation/models.py:1321 participation/views.py:1712 +#: participation/models.py:1330 participation/views.py:1712 msgid "Subtotal" msgstr "Sous-total" -#: participation/models.py:1587 +#: participation/models.py:1596 #, 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:1679 +#: participation/models.py:1688 #, 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:1692 +#: participation/models.py:1701 #, 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:1712 +#: participation/models.py:1721 msgid "position" msgstr "position" -#: participation/models.py:1719 +#: participation/models.py:1728 msgid "reported solution" msgstr "solution défendue" -#: participation/models.py:1757 +#: participation/models.py:1766 msgid "penalties" msgstr "pénalités" -#: participation/models.py:1759 +#: participation/models.py:1768 msgid "" "Number of penalties for the reporter. The reporter will loose a 0.5 " "coefficient per penalty." @@ -1817,128 +1783,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:1885 participation/models.py:1888 -#: participation/models.py:1891 participation/models.py:1894 +#: participation/models.py:1894 participation/models.py:1897 +#: participation/models.py:1900 participation/models.py:1903 #, 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:1899 +#: participation/models.py:1908 #, python-brace-format msgid "Passage of {reporter} for problem {problem}" msgstr "Passage de {reporter} pour le problème {problem}" -#: participation/models.py:1903 participation/models.py:1912 -#: participation/models.py:2001 participation/models.py:2044 +#: participation/models.py:1912 participation/models.py:1921 +#: participation/models.py:2010 participation/models.py:2053 msgid "passage" msgstr "passage" -#: participation/models.py:1904 +#: participation/models.py:1913 msgid "passages" msgstr "passages" -#: participation/models.py:1923 +#: participation/models.py:1932 msgid "difference" msgstr "différence" -#: participation/models.py:1924 +#: participation/models.py:1933 msgid "Score to add/remove on the final score" msgstr "Score à ajouter/retrancher au score final" -#: participation/models.py:1931 +#: participation/models.py:1940 msgid "tweak" msgstr "harmonisation" -#: participation/models.py:1932 +#: participation/models.py:1941 msgid "tweaks" msgstr "harmonisations" -#: participation/models.py:1964 +#: participation/models.py:1973 msgid "solution for the final tournament" msgstr "solution pour la finale" -#: participation/models.py:1969 participation/models.py:2013 +#: participation/models.py:1978 participation/models.py:2022 msgid "file" msgstr "fichier" -#: participation/models.py:1979 +#: participation/models.py:1988 #, 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:1981 +#: participation/models.py:1990 msgid "for final" msgstr "pour la finale" -#: participation/models.py:1984 +#: participation/models.py:1993 msgid "solution" msgstr "solution" -#: participation/models.py:1985 +#: participation/models.py:1994 msgid "solutions" msgstr "solutions" -#: participation/models.py:2019 +#: participation/models.py:2028 #, 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:2027 +#: participation/models.py:2036 msgid "written review" msgstr "note de synthèse" -#: participation/models.py:2028 +#: participation/models.py:2037 msgid "written reviews" msgstr "notes de synthèse" -#: participation/models.py:2037 +#: participation/models.py:2046 msgid "jury" msgstr "jury" -#: participation/models.py:2049 +#: participation/models.py:2058 msgid "reporter writing note" msgstr "note d'écrit défenseur⋅se" -#: participation/models.py:2055 +#: participation/models.py:2064 msgid "reporter oral note" msgstr "note d'oral défenseur⋅se" -#: participation/models.py:2061 +#: participation/models.py:2070 msgid "opponent writing note" msgstr "note d'écrit opposant⋅e" -#: participation/models.py:2067 +#: participation/models.py:2076 msgid "opponent oral note" msgstr "note d'oral opposant⋅e" -#: participation/models.py:2073 +#: participation/models.py:2082 msgid "reviewer writing note" msgstr "note d'écrit rapporteur⋅rice" -#: participation/models.py:2079 +#: participation/models.py:2088 msgid "reviewer oral note" msgstr "note d'oral du rapporteur⋅rice" -#: participation/models.py:2085 +#: participation/models.py:2094 msgid "observer writing note" msgstr "note d'écrit de l'observateur⋅rice" -#: participation/models.py:2091 +#: participation/models.py:2100 msgid "observer oral note" msgstr "note d'oral de l'observateur⋅rice" -#: participation/models.py:2156 +#: participation/models.py:2165 #, python-brace-format msgid "Notes of {jury} for {passage}" msgstr "Notes de {jury} pour le {passage}" -#: participation/models.py:2159 +#: participation/models.py:2168 msgid "note" msgstr "note" -#: participation/models.py:2160 +#: participation/models.py:2169 msgid "notes" msgstr "notes" @@ -1976,21 +1942,21 @@ msgstr "Poule {code}" msgid "No defined team" msgstr "Pas d'équipe définie" -#: participation/tables.py:157 participation/tables.py:165 +#: participation/tables.py:148 #: participation/templates/participation/note_form.html:14 #: participation/templates/participation/passage_detail.html:15 #: participation/templates/participation/passage_detail.html:176 #: participation/templates/participation/passage_detail.html:182 #: participation/templates/participation/pool_detail.html:13 #: participation/templates/participation/pool_detail.html:152 -#: participation/templates/participation/team_detail.html:185 -#: participation/templates/participation/team_detail.html:251 +#: participation/templates/participation/team_detail.html:194 +#: participation/templates/participation/team_detail.html:260 #: participation/templates/participation/tournament_form.html:12 #: participation/templates/participation/update_team.html:12 -#: registration/tables.py:46 registration/tables.py:57 +#: registration/tables.py:46 #: registration/templates/registration/payment_form.html:210 #: registration/templates/registration/update_user.html:16 -#: registration/templates/registration/user_detail.html:220 +#: registration/templates/registration/user_detail.html:226 #: survey/templates/survey/survey_detail.html:40 #: survey/templates/survey/survey_detail.html:76 #: survey/templates/survey/survey_form.html:12 @@ -2022,6 +1988,7 @@ msgstr "Défense de" #: participation/templates/participation/team_detail.html:30 #: participation/templates/participation/team_detail.html:39 #: participation/templates/participation/team_detail.html:48 +#: participation/templates/participation/team_detail.html:57 #: registration/templates/registration/user_detail.html:6 #: registration/templates/registration/user_detail.html:35 msgid "any" @@ -2038,7 +2005,7 @@ msgstr "Équipe :" #: participation/templates/participation/participation_detail.html:16 #: participation/templates/participation/pool_detail.html:20 -#: participation/templates/participation/team_detail.html:43 +#: participation/templates/participation/team_detail.html:52 msgid "Tournament:" msgstr "Tournoi :" @@ -2073,7 +2040,7 @@ msgstr "Envoyer une solution" #: participation/templates/participation/participation_detail.html:65 #: participation/templates/participation/passage_detail.html:188 #: participation/templates/participation/pool_detail.html:157 -#: participation/templates/participation/team_detail.html:245 +#: participation/templates/participation/team_detail.html:254 #: participation/templates/participation/upload_motivation_letter.html:13 #: participation/templates/participation/upload_notes.html:24 #: participation/templates/participation/upload_solution.html:11 @@ -2082,12 +2049,12 @@ msgstr "Envoyer une solution" #: registration/templates/registration/upload_parental_authorization.html:17 #: registration/templates/registration/upload_photo_authorization.html:18 #: registration/templates/registration/upload_vaccine_sheet.html:13 -#: registration/templates/registration/user_detail.html:230 -#: registration/templates/registration/user_detail.html:237 -#: registration/templates/registration/user_detail.html:244 +#: registration/templates/registration/user_detail.html:236 +#: registration/templates/registration/user_detail.html:243 #: registration/templates/registration/user_detail.html:250 -#: registration/templates/registration/user_detail.html:258 +#: registration/templates/registration/user_detail.html:256 #: registration/templates/registration/user_detail.html:264 +#: registration/templates/registration/user_detail.html:270 msgid "Upload" msgstr "Téléverser" @@ -2345,52 +2312,56 @@ msgid "Access code:" msgstr "Code d'accès :" #: participation/templates/participation/team_detail.html:25 -msgid "Coaches:" -msgstr "Encadrant⋅es :" +msgid "Scientific coaches:" +msgstr "Encadrant⋅es scientifiques :" #: participation/templates/participation/team_detail.html:34 +msgid "Accompanying coaches:" +msgstr "Accompagnateur⋅rices :" + +#: participation/templates/participation/team_detail.html:43 msgid "Participants:" msgstr "Participant⋅es :" -#: participation/templates/participation/team_detail.html:52 +#: participation/templates/participation/team_detail.html:61 msgid "Photo authorizations:" msgstr "Autorisations de droit à l'image :" -#: participation/templates/participation/team_detail.html:58 -#: participation/templates/participation/team_detail.html:70 -#: participation/templates/participation/team_detail.html:85 -#: participation/templates/participation/team_detail.html:100 -#: participation/templates/participation/team_detail.html:114 -#: participation/templates/participation/team_detail.html:128 -#: participation/templates/participation/team_detail.html:142 +#: participation/templates/participation/team_detail.html:67 +#: participation/templates/participation/team_detail.html:79 +#: participation/templates/participation/team_detail.html:94 +#: participation/templates/participation/team_detail.html:109 +#: participation/templates/participation/team_detail.html:123 +#: participation/templates/participation/team_detail.html:137 +#: participation/templates/participation/team_detail.html:151 msgid "Not uploaded yet" msgstr "Pas encore envoyée" -#: participation/templates/participation/team_detail.html:64 +#: participation/templates/participation/team_detail.html:73 msgid "Photo authorizations (final):" msgstr "Autorisations de droit à l'image (finale) :" -#: participation/templates/participation/team_detail.html:78 +#: participation/templates/participation/team_detail.html:87 msgid "Health sheets:" msgstr "Fiches sanitaires :" -#: participation/templates/participation/team_detail.html:93 +#: participation/templates/participation/team_detail.html:102 msgid "Vaccine sheets:" msgstr "Carnets de vaccination :" -#: participation/templates/participation/team_detail.html:107 +#: participation/templates/participation/team_detail.html:116 msgid "Parental authorizations:" msgstr "Autorisations parentales :" -#: participation/templates/participation/team_detail.html:121 +#: participation/templates/participation/team_detail.html:130 msgid "Parental authorizations (final):" msgstr "Autorisations parentale (finale) :" -#: participation/templates/participation/team_detail.html:137 +#: participation/templates/participation/team_detail.html:146 msgid "Motivation letter:" msgstr "Lettre de motivation :" -#: participation/templates/participation/team_detail.html:140 +#: participation/templates/participation/team_detail.html:149 #: registration/templates/registration/payment_form.html:247 #: registration/templates/registration/payment_form.html:269 #: registration/templates/registration/upload_health_sheet.html:12 @@ -2404,7 +2375,7 @@ msgstr "Lettre de motivation :" msgid "Download" msgstr "Télécharger" -#: participation/templates/participation/team_detail.html:145 +#: participation/templates/participation/team_detail.html:154 #: registration/templates/registration/user_detail.html:75 #: registration/templates/registration/user_detail.html:85 #: registration/templates/registration/user_detail.html:99 @@ -2414,36 +2385,36 @@ msgstr "Télécharger" msgid "Replace" msgstr "Remplacer" -#: participation/templates/participation/team_detail.html:154 +#: participation/templates/participation/team_detail.html:163 msgid "Download all submitted authorizations" msgstr "Télécharger toutes les autorisations soumises" -#: participation/templates/participation/team_detail.html:165 +#: participation/templates/participation/team_detail.html:174 msgid "Payment of" msgstr "Paiement de" -#: participation/templates/participation/team_detail.html:166 -#: registration/models.py:700 +#: participation/templates/participation/team_detail.html:175 +#: registration/models.py:718 msgid "grouped" msgstr "groupé" -#: participation/templates/participation/team_detail.html:174 -#: registration/templates/registration/user_detail.html:197 +#: participation/templates/participation/team_detail.html:183 +#: registration/templates/registration/user_detail.html:203 #: registration/views.py:526 msgid "Update payment" msgstr "Mettre à jour le paiement" -#: participation/templates/participation/team_detail.html:187 -#: participation/templates/participation/team_detail.html:256 +#: participation/templates/participation/team_detail.html:196 +#: participation/templates/participation/team_detail.html:265 #: participation/templates/participation/team_leave.html:11 msgid "Leave" msgstr "Quitter" -#: participation/templates/participation/team_detail.html:197 +#: participation/templates/participation/team_detail.html:206 msgid "Access to team participation" msgstr "Accéder à la participation de l'équipe" -#: participation/templates/participation/team_detail.html:204 +#: participation/templates/participation/team_detail.html:213 msgid "" "Your team has at least 4 members and a coach and all authorizations were " "given: the team can be validated." @@ -2451,11 +2422,11 @@ msgstr "" "Votre équipe contient au moins 4 personnes et un⋅e encadrant⋅e et toutes les " "autorisations ont été données : l'équipe peut être validée." -#: participation/templates/participation/team_detail.html:209 +#: participation/templates/participation/team_detail.html:218 msgid "Submit my team to validation" msgstr "Soumettre mon équipe à validation" -#: participation/templates/participation/team_detail.html:215 +#: participation/templates/participation/team_detail.html:224 msgid "" "Your team must be composed of 4 members and a coach and each member must " "upload their authorizations and confirm its email address." @@ -2463,15 +2434,15 @@ msgstr "" "Votre équipe doit être composée d'au moins 4 membres et un⋅e encadrant⋅e et " "chaque membre doit envoyer ses autorisations et confirmé son adresse e-mail." -#: participation/templates/participation/team_detail.html:220 +#: participation/templates/participation/team_detail.html:229 msgid "This team didn't ask for validation yet." msgstr "L'équipe n'a pas encore demandé à être validée." -#: participation/templates/participation/team_detail.html:226 +#: participation/templates/participation/team_detail.html:235 msgid "Your validation is pending." msgstr "Votre validation est en attente." -#: participation/templates/participation/team_detail.html:230 +#: participation/templates/participation/team_detail.html:239 msgid "" "The team requested to be validated. You may now control the authorizations " "and confirm that they can participate." @@ -2479,24 +2450,24 @@ msgstr "" "L'équipe a demandé à être validée. Vous pouvez désormais contrôler les " "différentes autorisations et confirmer qu'elle peut participer." -#: participation/templates/participation/team_detail.html:236 +#: participation/templates/participation/team_detail.html:245 msgid "Validate" msgstr "Valider" -#: participation/templates/participation/team_detail.html:237 +#: participation/templates/participation/team_detail.html:246 msgid "Invalidate" msgstr "Invalider" -#: participation/templates/participation/team_detail.html:244 +#: participation/templates/participation/team_detail.html:253 #: participation/views.py:344 msgid "Upload motivation letter" msgstr "Envoyer la lettre de motivation" -#: participation/templates/participation/team_detail.html:250 +#: participation/templates/participation/team_detail.html:259 msgid "Update team" msgstr "Modifier l'équipe" -#: participation/templates/participation/team_detail.html:255 +#: participation/templates/participation/team_detail.html:264 #: participation/views.py:506 msgid "Leave team" msgstr "Quitter l'équipe" @@ -2648,6 +2619,10 @@ msgstr "Dépublier les notes pour le troisième tour" msgid "Files available for download" msgstr "Fichiers disponibles au téléchargement" +#: participation/templates/participation/tournament_detail.html:247 +msgid "IMPORTANT" +msgstr "IMPORTANT" + #: participation/templates/participation/tournament_detail.html:250 msgid "" "The files accessible below may contain personal information. In compliance " @@ -2714,7 +2689,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:671 +#: registration/models.py:689 msgid "Note" msgstr "Note" @@ -2805,10 +2780,6 @@ msgstr "" "d'adresse e-mail, soit une autorisation, soit des personnes, soit la lettre " "de motivation, soit le tournoi n'a pas été choisi." -#: participation/views.py:236 -msgid "Team validation" -msgstr "Validation d'équipe" - #: participation/views.py:248 msgid "You are not an organizer of the tournament." msgstr "Vous n'êtes pas un⋅e organisateur⋅rice du tournoi." @@ -2817,14 +2788,6 @@ msgstr "Vous n'êtes pas un⋅e organisateur⋅rice du tournoi." msgid "This team has no pending validation." msgstr "L'équipe n'a pas de validation en attente." -#: participation/views.py:272 -msgid "Team validated" -msgstr "Équipe validée" - -#: participation/views.py:282 -msgid "Team not validated" -msgstr "Équipe non validée" - #: participation/views.py:285 msgid "You must specify if you validate the registration or not." msgstr "Vous devez spécifier si vous validez l'inscription ou non." @@ -3026,8 +2989,8 @@ msgstr "Marquer comme en attente" msgid "Mark as invalid" msgstr "Marquer comme invalide" -#: registration/apps.py:14 registration/models.py:132 -#: registration/models.py:696 +#: registration/apps.py:14 registration/models.py:133 +#: registration/models.py:714 msgid "registrations" msgstr "inscriptions" @@ -3039,7 +3002,7 @@ msgstr "rôle" msgid "participant" msgstr "participant⋅e" -#: registration/forms.py:26 registration/models.py:532 +#: registration/forms.py:26 registration/models.py:550 msgid "coach" msgstr "encadrant⋅e" @@ -3047,84 +3010,84 @@ msgstr "encadrant⋅e" msgid "This email address is already used." msgstr "Cette adresse e-mail est déjà utilisée." -#: registration/forms.py:286 +#: registration/forms.py:289 msgid "Pending" msgstr "En attente" -#: registration/forms.py:305 registration/forms.py:338 +#: registration/forms.py:308 registration/forms.py:341 msgid "You must upload your receipt." msgstr "Vous devez envoyer votre justificatif." -#: registration/models.py:41 +#: registration/models.py:42 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:46 +#: registration/models.py:47 msgid "email confirmed" msgstr "email confirmé" -#: registration/models.py:54 +#: registration/models.py:55 msgid "Activate your account" msgstr "Activez votre compte" -#: registration/models.py:111 +#: registration/models.py:112 #, python-brace-format msgid "" "Your email address is not validated. Please click on the link you received " -"by email. You can resend a mail by clicking on this link." +"by email. You can resend a mail by clicking on this link." msgstr "" "Votre adresse mail n'est pas validée. Merci de cliquer sur le lien que vous " "avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur ce lien." -#: registration/models.py:131 +#: registration/models.py:132 msgid "registration" msgstr "inscription" -#: registration/models.py:164 +#: registration/models.py:165 msgid "gender" msgstr "genre" -#: registration/models.py:166 +#: registration/models.py:167 msgid "Female" msgstr "Femme" -#: registration/models.py:167 +#: registration/models.py:168 msgid "Male" msgstr "Homme" -#: registration/models.py:168 +#: registration/models.py:169 #: registration/templates/registration/payment_form.html:89 msgid "Other" msgstr "Autre" -#: registration/models.py:174 +#: registration/models.py:175 msgid "address" msgstr "adresse" -#: registration/models.py:178 +#: registration/models.py:179 msgid "zip code" msgstr "code postal" -#: registration/models.py:184 +#: registration/models.py:185 msgid "city" msgstr "ville" -#: registration/models.py:189 +#: registration/models.py:190 msgid "country" msgstr "pays" -#: registration/models.py:194 +#: registration/models.py:195 msgid "phone number" msgstr "numéro de téléphone" -#: registration/models.py:199 +#: registration/models.py:200 msgid "health issues" msgstr "problèmes de santé" -#: registration/models.py:201 +#: registration/models.py:202 msgid "" "You can indicate here your allergies or anything that is important to know " "for organizers." @@ -3132,11 +3095,11 @@ msgstr "" "Vous pouvez indiquer ici vos allergies ou n'importe quoi qui peut être bon à " "savoir pour les organisateur⋅rices." -#: registration/models.py:205 +#: registration/models.py:206 msgid "housing constraints" msgstr "contraintes de logement" -#: registration/models.py:207 +#: registration/models.py:208 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 " @@ -3149,15 +3112,15 @@ msgstr "" "organisateur⋅rices. Laissez vide si vous n'avez rien de spécifique à " "déclarer." -#: registration/models.py:214 +#: registration/models.py:215 msgid "photo authorization" msgstr "autorisation de droit à l'image" -#: registration/models.py:221 +#: registration/models.py:222 msgid "photo authorization (final)" msgstr "autorisation de droit à l'image (finale)" -#: registration/models.py:267 +#: registration/models.py:268 #, 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:273 +#: registration/models.py:274 msgid "No team" msgstr "Pas d'équipe" -#: registration/models.py:281 +#: registration/models.py:282 #, python-brace-format msgid "" "You have not uploaded your photo authorization. You can do it by clicking on " @@ -3180,11 +3143,11 @@ msgstr "" "Vous n'avez pas envoyé votre autorisation de droit à l'image. Vous pouvez le " "faire en cliquant sur ce lien." -#: registration/models.py:286 registration/models.py:299 +#: registration/models.py:287 registration/models.py:300 msgid "Photo authorization" msgstr "Autorisation de droit à l'image" -#: registration/models.py:294 +#: registration/models.py:295 #, python-brace-format msgid "" "You have not uploaded your photo authorization for the final tournament. You " @@ -3193,75 +3156,75 @@ msgstr "" "Vous n'avez pas envoyé votre autorisation de droit à l'image pour la finale. " "Vous pouvez le faire en cliquant sur ce lien." -#: registration/models.py:328 +#: registration/models.py:329 msgid "Team selected for the final tournament" msgstr "Équipe sélectionnée pour la finale" -#: registration/models.py:350 +#: registration/models.py:351 msgid "participant registration" msgstr "inscription de participant⋅e" -#: registration/models.py:351 +#: registration/models.py:352 msgid "participant registrations" msgstr "inscriptions de participant⋅es" -#: registration/models.py:360 +#: registration/models.py:361 msgid "birth date" msgstr "date de naissance" -#: registration/models.py:366 +#: registration/models.py:367 msgid "12th grade" msgstr "Terminale" -#: registration/models.py:367 +#: registration/models.py:368 msgid "11th grade" msgstr "Première" -#: registration/models.py:368 +#: registration/models.py:369 msgid "10th grade or lower" msgstr "Seconde ou inférieur" -#: registration/models.py:370 +#: registration/models.py:371 msgid "student class" msgstr "classe" -#: registration/models.py:375 +#: registration/models.py:376 msgid "school" msgstr "école" -#: registration/models.py:380 +#: registration/models.py:381 msgid "responsible name" msgstr "nom d'un⋅e responsable légal⋅e" -#: registration/models.py:385 +#: registration/models.py:386 msgid "responsible phone number" msgstr "numéro de téléphone d'un⋅e responsable légal⋅e" -#: registration/models.py:390 +#: registration/models.py:391 msgid "responsible email address" msgstr "adresse e-mail d'un⋅e responsable légal⋅e" -#: registration/models.py:395 +#: registration/models.py:396 msgid "parental authorization" msgstr "autorisation parentale" -#: registration/models.py:402 +#: registration/models.py:403 msgid "parental authorization (final)" msgstr "autorisation parentale (finale)" -#: registration/models.py:409 +#: registration/models.py:410 msgid "health sheet" msgstr "fiche sanitaire" -#: registration/models.py:416 +#: registration/models.py:417 msgid "vaccine sheet" msgstr "carnet de vaccination" -#: registration/models.py:424 +#: registration/models.py:425 msgid "student" msgstr "élève" -#: registration/models.py:435 +#: registration/models.py:436 #, python-brace-format msgid "" "You have not uploaded your parental authorization. You can do it by clicking " @@ -3270,11 +3233,11 @@ msgstr "" "Vous n'avez pas envoyé votre autorisation parentale. Vous pouvez le faire en " "cliquant sur ce lien." -#: registration/models.py:440 registration/models.py:500 +#: registration/models.py:441 registration/models.py:501 msgid "Parental authorization" msgstr "Autorisation parentale" -#: registration/models.py:446 +#: registration/models.py:447 #, python-brace-format msgid "" "You have not uploaded your health sheet. You can do it by clicking on ce lien." -#: registration/models.py:451 +#: registration/models.py:452 msgid "Health sheet" msgstr "Fiche sanitaire" -#: registration/models.py:457 +#: registration/models.py:458 #, python-brace-format msgid "" "You have not uploaded your vaccine sheet. You can do it by clicking on ce lien." -#: registration/models.py:462 +#: registration/models.py:463 msgid "Vaccine sheet" msgstr "Carnet de vaccination" -#: registration/models.py:471 +#: registration/models.py:472 #, python-brace-format msgid "" "You have to pay {amount} € for your registration, or send a scholarship " @@ -3311,15 +3274,15 @@ msgstr "" "notification de bourse ou un justificatif de paiement. Vous pouvez le faire " "sur la page de paiement." -#: registration/models.py:477 registration/models.py:486 +#: registration/models.py:478 registration/models.py:487 msgid "Payment" msgstr "Paiement" -#: registration/models.py:483 +#: registration/models.py:484 msgid "Your payment is under approval." msgstr "Votre paiement est en cours de validation." -#: registration/models.py:494 +#: registration/models.py:495 #, python-brace-format msgid "" "You have not uploaded your parental authorization for the final tournament. " @@ -3328,19 +3291,19 @@ msgstr "" "Vous n'avez pas envoyé votre autorisation parentale pour la finale. Vous " "pouvez le faire en cliquant sur ce lien." -#: registration/models.py:509 +#: registration/models.py:510 msgid "student registration" msgstr "inscription d'élève" -#: registration/models.py:510 +#: registration/models.py:511 msgid "student registrations" msgstr "inscriptions d'élève" -#: registration/models.py:521 +#: registration/models.py:522 msgid "most recent degree in mathematics, computer science or physics" msgstr "Dernier diplôme obtenu en mathématiques, informatique ou physique" -#: registration/models.py:522 +#: registration/models.py:523 msgid "" "Your most recent degree in maths, computer science or physics, or your last " "entrance exam (CAPES, Agrégation,…)" @@ -3348,23 +3311,47 @@ msgstr "" "Votre dernier diplôme en mathématiques, informatique ou physique, ou votre " "dernier concours obtenu (CAPES, Agrégation, …)" -#: registration/models.py:527 registration/models.py:549 +#: registration/models.py:528 registration/models.py:567 msgid "professional activity" msgstr "activité professionnelle" -#: registration/models.py:540 +#: registration/models.py:533 +msgid "Scientific coach" +msgstr "Encadrant⋅e scientifique" + +#: registration/models.py:536 +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." + +#: registration/models.py:538 +msgid "see practical sheet" +msgstr "Voir fiche pratique" + +#: registration/models.py:544 +msgid "Accompanying coach" +msgstr "Accompagnateur" + +#: registration/models.py:545 +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." + +#: registration/models.py:558 msgid "coach registration" msgstr "inscription d'encadrant⋅e" -#: registration/models.py:541 +#: registration/models.py:559 msgid "coach registrations" msgstr "inscriptions d'encadrant⋅es" -#: registration/models.py:553 +#: registration/models.py:571 msgid "administrator" msgstr "administrateur⋅rice" -#: registration/models.py:554 +#: registration/models.py:572 msgid "" "An administrator has all rights. Please don't give this right to all juries " "and volunteers." @@ -3372,15 +3359,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:564 +#: registration/models.py:582 msgid "admin" msgstr "admin" -#: registration/models.py:564 +#: registration/models.py:582 msgid "volunteer" msgstr "bénévole" -#: registration/models.py:577 +#: registration/models.py:595 msgid "" "Registrations for tournament {tournament} are closing on {date:%Y-%m-%d %H:" "%M}. There are for now {validated_teams} validated teams (+ {pending_teams} " @@ -3390,22 +3377,22 @@ msgstr "" "%M}. Il y a pour l'instant {validated_teams} équipes validées (+ " "{pending_teams} en attente) sur {max_teams} attendues." -#: registration/models.py:585 +#: registration/models.py:603 msgid "Registrations" msgstr "Inscriptions" -#: registration/models.py:592 +#: registration/models.py:610 #, python-brace-format msgid "" "The team {trigram} requested to be validated for the tournament of " -"{tournament}. You can check the status of the team on the team page." +"{tournament}. You can check the status of the team on the team page." msgstr "" "L'équipe {trigram} a demandé à être validée pour le tournoi {tournament}. " "Vous pouvez vérifier le statut de l'équipe sur la page de " "l'équipe." -#: registration/models.py:609 +#: registration/models.py:627 #, python-brace-format msgid "" "There are {valid} validated payments, {pending} pending and {invalid} " @@ -3416,11 +3403,11 @@ msgstr "" "invalides pour le tournoi {tournament}. Vous pouvez vérifier le statut des " "paiements sur la liste des paiements." -#: registration/models.py:616 +#: registration/models.py:634 msgid "Payments" msgstr "Paiements" -#: registration/models.py:640 registration/models.py:651 +#: registration/models.py:658 registration/models.py:669 #, python-brace-format msgid "" "

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

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

" -#: registration/models.py:680 +#: registration/models.py:698 msgid "volunteer registration" msgstr "inscription de bénévole" -#: registration/models.py:681 +#: registration/models.py:699 msgid "volunteer registrations" msgstr "inscriptions de bénévoles" -#: registration/models.py:702 +#: registration/models.py:720 msgid "" "If set to true, then one payment is made for the full team, for example if " "the school pays for all." @@ -3456,100 +3443,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:707 +#: registration/models.py:725 msgid "total amount" msgstr "montant total" -#: registration/models.py:708 +#: registration/models.py:726 msgid "Corresponds to the total required amount to pay, in euros." msgstr "Correspond au montant total à payer, en euros." -#: registration/models.py:713 +#: registration/models.py:731 msgid "token" msgstr "jeton" -#: registration/models.py:716 +#: registration/models.py:734 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:720 +#: registration/models.py:738 msgid "for final tournament" msgstr "pour la finale" -#: registration/models.py:725 +#: registration/models.py:743 msgid "type" msgstr "type" -#: registration/models.py:728 +#: registration/models.py:746 msgid "No payment" msgstr "Pas de paiement" -#: registration/models.py:729 +#: registration/models.py:747 #: registration/templates/registration/payment_form.html:72 msgid "Credit card" msgstr "Carte bancaire" -#: registration/models.py:730 +#: registration/models.py:748 msgid "Scholarship" msgstr "Notification de bourse" -#: registration/models.py:731 +#: registration/models.py:749 #: registration/templates/registration/payment_form.html:77 msgid "Bank transfer" msgstr "Virement bancaire" -#: registration/models.py:732 +#: registration/models.py:750 msgid "Other (please indicate)" msgstr "Autre (veuillez spécifier)" -#: registration/models.py:733 +#: registration/models.py:751 msgid "The tournament is free" msgstr "Le tournoi est gratuit" -#: registration/models.py:740 +#: registration/models.py:758 msgid "Hello Asso checkout intent ID" msgstr "ID de l'intention de paiement Hello Asso" -#: registration/models.py:747 +#: registration/models.py:765 msgid "receipt" msgstr "justificatif" -#: registration/models.py:748 +#: registration/models.py:766 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:755 +#: registration/models.py:773 msgid "additional information" msgstr "informations additionnelles" -#: registration/models.py:756 +#: registration/models.py:774 msgid "To help us to find your payment." msgstr "Pour nous aider à retrouver votre paiement, si nécessaire." -#: registration/models.py:762 +#: registration/models.py:780 msgid "payment valid" msgstr "paiement valide" -#: registration/models.py:822 +#: registration/models.py:840 msgid "Reminder for your payment" msgstr "Rappel pour votre paiement" -#: registration/models.py:833 +#: registration/models.py:851 msgid "Payment confirmation" msgstr "Confirmation de paiement" -#: registration/models.py:855 +#: registration/models.py:873 #, python-brace-format msgid "Payment of {registrations}" msgstr "Paiements de {registrations}" -#: registration/models.py:858 +#: registration/models.py:876 msgid "payment" msgstr "paiement" -#: registration/models.py:859 +#: registration/models.py:877 msgid "payments" msgstr "paiements" @@ -4204,76 +4191,84 @@ msgid "Responsible email address:" msgstr "Adresse e-mail d'un⋅e responsable légal⋅e :" #: registration/templates/registration/user_detail.html:154 +msgid "Scientific coach:" +msgstr "encadrant⋅e scientifique" + +#: registration/templates/registration/user_detail.html:157 +msgid "Accompanying coach:" +msgstr "Accompagnateur⋅rice :" + +#: registration/templates/registration/user_detail.html:160 msgid "Most recent degree:" msgstr "Dernier diplôme obtenu :" -#: registration/templates/registration/user_detail.html:157 -#: registration/templates/registration/user_detail.html:161 +#: registration/templates/registration/user_detail.html:163 +#: registration/templates/registration/user_detail.html:167 msgid "Professional activity:" msgstr "Activité professionnelle :" -#: registration/templates/registration/user_detail.html:164 +#: registration/templates/registration/user_detail.html:170 msgid "Admin:" msgstr "Administrateur⋅rice :" -#: registration/templates/registration/user_detail.html:169 +#: registration/templates/registration/user_detail.html:175 msgid "Grant Animath to contact me in the future about other actions:" msgstr "Autorise Animath à recontacter à propos d'autres actions :" -#: registration/templates/registration/user_detail.html:180 +#: registration/templates/registration/user_detail.html:186 msgid "Payment information (final):" msgstr "Informations de paiement (finale) :" -#: registration/templates/registration/user_detail.html:182 +#: registration/templates/registration/user_detail.html:188 msgid "Payment information:" msgstr "Informations de paiement :" -#: registration/templates/registration/user_detail.html:186 +#: registration/templates/registration/user_detail.html:192 msgid "yes,no,pending" msgstr "oui,non,en attente" -#: registration/templates/registration/user_detail.html:190 -#: registration/templates/registration/user_detail.html:193 +#: registration/templates/registration/user_detail.html:196 +#: registration/templates/registration/user_detail.html:199 msgid "valid:" msgstr "valide :" -#: registration/templates/registration/user_detail.html:205 +#: registration/templates/registration/user_detail.html:211 msgid "Download scholarship attestation" msgstr "Télécharger l'attestation de bourse" -#: registration/templates/registration/user_detail.html:207 +#: registration/templates/registration/user_detail.html:213 msgid "Download bank transfer receipt" msgstr "Télécharger le justificatif de virement bancaire" -#: registration/templates/registration/user_detail.html:222 +#: registration/templates/registration/user_detail.html:228 msgid "Impersonate" msgstr "Impersonifier" -#: registration/templates/registration/user_detail.html:229 +#: registration/templates/registration/user_detail.html:235 #: registration/views.py:334 msgid "Upload photo authorization" msgstr "Téléverser l'autorisation de droit à l'image" -#: registration/templates/registration/user_detail.html:236 +#: registration/templates/registration/user_detail.html:242 #: registration/views.py:368 msgid "Upload health sheet" msgstr "Téléverser la fiche sanitaire" -#: registration/templates/registration/user_detail.html:243 +#: registration/templates/registration/user_detail.html:249 #: registration/views.py:389 msgid "Upload vaccine sheet" msgstr "Téléverser le carnet de vaccination" -#: registration/templates/registration/user_detail.html:249 +#: registration/templates/registration/user_detail.html:255 #: registration/views.py:409 msgid "Upload parental authorization" msgstr "Téléverser l'autorisation parentale" -#: registration/templates/registration/user_detail.html:257 +#: registration/templates/registration/user_detail.html:263 msgid "Upload photo authorization (final)" msgstr "Téléverser l'autorisation de droit à l'image (finale)" -#: registration/templates/registration/user_detail.html:263 +#: registration/templates/registration/user_detail.html:269 msgid "Upload parental authorization (final)" msgstr "Téléverser l'autorisation parentale (finale)" @@ -4716,16 +4711,16 @@ msgstr "J'ai une question" msgid "" "Do not hesitate to consult the documentation of the site, to check if the answer is " -"not already there. Also refer of course to the ETEAM rules. For any other " -"question, do not hesitate to contact us by email at the address eteam_moc@proton.me ." +"not already there. Also refer of course to the ETEAM rules. For any other question, do " +"not hesitate to contact us by email at the address eteam_moc@proton.me ." msgstr "" "N'hésitez pas à consulter la documentation du site, pour vérifier si la réponse n'y " -"est pas déjà. Référez-vous également bien sûr au règlement de l'ETEAM. Pour " -"toute autre question, n'hésitez pas à nous contacter par mail à l'adresse règlement de l'ETEAM. Pour toute " +"autre question, n'hésitez pas à nous contacter par mail à l'adresse eteam_moc@proton.me ." #: tfjm/templates/index_tfjm.html:20 @@ -4775,14 +4770,13 @@ msgstr "Je ne trouve pas d'équipe, aidez-moi !" #: tfjm/templates/index_tfjm.html:58 msgid "" -"You can contact us at the address contact@tfjm.org so that we can help " -"you get in touch with other participants who are also looking for a team." +"You can contact us at the address contact@tfjm.org so that we can help you get in touch with other " +"participants who are also looking for a team." msgstr "" -"Vous pouvez nous contacter à l'adresse contact@tfjm.org pour que nous " -"puissions vous mettre en relation avec d'autres participant⋅es qui cherchent " -"également une équipe." +"Vous pouvez nous contacter à l'adresse contact@tfjm.org pour que nous puissions vous mettre en relation " +"avec d'autres participant⋅es qui cherchent également une équipe." #: tfjm/templates/index_tfjm.html:67 msgid "" @@ -4790,19 +4784,19 @@ msgid "" "target=\"_blank\">documentation of the site, to check if the answer is " "not already there. Also refer of course to the 𝕋𝔽𝕁𝕄² rules. For any other question, do " -"not hesitate to contact us by email at the address " -"contact@tfjm.org " -"." +"not hesitate to contact us by email at the address contact@tf" +"jm.org ." msgstr "" "N'hésitez pas à consulter la documentation du site, pour vérifier si la réponse n'y " "est pas déjà. Référez-vous également bien sûr au règlement du 𝕋𝔽𝕁𝕄². Pour toute autre " "question, n'hésitez pas à nous contacter par mail à l'adresse " -"contact@tfjm.org " -"." +"href=\"mailto:contact@tfj" +"m.org\"> contact@" +"tfjm.org ." #: tfjm/templates/index_tfjm.html:79 msgid "Save the dates!" @@ -4900,3 +4894,31 @@ 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/models.py b/participation/models.py index d58cff0..290cad4 100644 --- a/participation/models.py +++ b/participation/models.py @@ -70,13 +70,21 @@ 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) def can_validate(self): if any(not r.email_confirmed for r in self.participants.all()): return False if self.students.count() < 4: return False - if not self.coaches.exists(): + if not self.scientific_coaches.exists(): return False if not self.participation.tournament: return False @@ -211,6 +219,7 @@ 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/participation/templates/participation/team_detail.html b/participation/templates/participation/team_detail.html index 7e6ad0f..49b54c1 100644 --- a/participation/templates/participation/team_detail.html +++ b/participation/templates/participation/team_detail.html @@ -22,9 +22,18 @@
{% trans "Access code:" %}
{{ team.access_code }}
-
{% trans "Coaches:" %}
+
{% trans "Scientific coaches:" %}
- {% for coach in team.coaches.all %} + {% for coach in team.scientific_coaches.all %} + {{ coach }}{% if not forloop.last %},{% endif %} + {% empty %} + {% trans "any" %} + {% endfor %} +
+ +
{% trans "Accompanying coaches:" %}
+
+ {% for coach in team.accompanying_coaches.all %} {{ coach }}{% if not forloop.last %},{% endif %} {% empty %} {% trans "any" %} diff --git a/participation/tests.py b/participation/tests.py index 92310a4..4b61c0e 100644 --- a/participation/tests.py +++ b/participation/tests.py @@ -285,6 +285,7 @@ class TestStudentParticipation(TestCase): self.coach.registration.vaccine_sheet = "authorization/vaccine/coach" self.coach.registration.photo_authorization = "authorization/photo/coach" self.coach.registration.email_confirmed = True + self.coach.registration.is_scientific_coach = True self.coach.registration.save() self.client.force_login(self.superuser) diff --git a/registration/admin.py b/registration/admin.py index 1285d1b..639824e 100644 --- a/registration/admin.py +++ b/registration/admin.py @@ -61,7 +61,7 @@ class RegistrationAdmin(PolymorphicParentModelAdmin): @admin.register(ParticipantRegistration) class ParticipantRegistrationAdmin(PolymorphicChildModelAdmin): - list_display = ('user', 'first_name', 'last_name', 'type', 'team', 'email_confirmed',) + list_display = ('user', 'first_name', 'last_name', 'type', 'team', 'email_confirmed') list_filter = ('email_confirmed',) search_fields = ('user__first_name', 'user__last_name', 'user__email',) autocomplete_fields = ('user', 'team',) @@ -93,7 +93,7 @@ class StudentRegistrationAdmin(PolymorphicChildModelAdmin): @admin.register(CoachRegistration) class CoachRegistrationAdmin(PolymorphicChildModelAdmin): - list_display = ('user', 'first_name', 'last_name', 'team', 'email_confirmed',) + list_display = ('user', 'first_name', 'last_name', 'team', 'email_confirmed', 'is_accompanying_coach', 'is_scientific_coach') list_filter = ('email_confirmed',) search_fields = ('user__first_name', 'user__last_name', 'user__email',) autocomplete_fields = ('user', 'team',) diff --git a/registration/forms.py b/registration/forms.py index bbebc06..1b2ef33 100644 --- a/registration/forms.py +++ b/registration/forms.py @@ -251,6 +251,9 @@ class CoachRegistrationForm(forms.ModelForm): """ A coach can tell its professional activity. """ + + + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if not settings.SUGGEST_ANIMATH: @@ -258,9 +261,9 @@ class CoachRegistrationForm(forms.ModelForm): class Meta: model = CoachRegistration - fields = ('team', 'gender', 'address', 'zip_code', 'city', 'country', 'phone_number', + fields = ('team', 'is_scientific_coach', 'is_accompanying_coach', 'gender', 'address', 'zip_code', 'city', 'country', 'phone_number', 'last_degree', 'professional_activity', 'health_issues', 'housing_constraints', - 'give_contact_to_animath', 'email_confirmed',) + 'give_contact_to_animath', 'email_confirmed') class VolunteerRegistrationForm(forms.ModelForm): diff --git a/registration/migrations/0016_coachregistration_is_accompanying_coach_and_more.py b/registration/migrations/0016_coachregistration_is_accompanying_coach_and_more.py new file mode 100644 index 0000000..cfe92bd --- /dev/null +++ b/registration/migrations/0016_coachregistration_is_accompanying_coach_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.8 on 2025-11-06 18:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('registration', '0015_alter_participantregistration_gender'), + ] + + operations = [ + migrations.AddField( + model_name='coachregistration', + name='is_accompanying_coach', + field=models.BooleanField(default=False, help_text='Accompanies the team during the weekend and stays for the entire tournament.', verbose_name='Accompanying coach'), + ), + migrations.AddField( + model_name='coachregistration', + name='is_scientific_coach', + field=models.BooleanField(default=False, help_text='Provides scientific guidance: methodology, content review, and project mentoring during the preparation phase. see practical sheet.', verbose_name='Scientific coach'), + ), + ] diff --git a/registration/models.py b/registration/models.py index a9ded72..e52c1d8 100644 --- a/registration/models.py +++ b/registration/models.py @@ -22,6 +22,7 @@ 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 class Registration(PolymorphicModel): @@ -527,6 +528,23 @@ class CoachRegistration(ParticipantRegistration): verbose_name=_("professional activity"), ) + is_scientific_coach = models.BooleanField( + default=False, + verbose_name=_("Scientific coach"), + help_text=format_html( + '{} {}.', + _("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", + _("see practical sheet"), + ), + ) + + 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."), + ) + @property def type(self): return _("coach") diff --git a/registration/templates/registration/user_detail.html b/registration/templates/registration/user_detail.html index dc1aa7f..3384aec 100644 --- a/registration/templates/registration/user_detail.html +++ b/registration/templates/registration/user_detail.html @@ -151,6 +151,12 @@
{{ email }}
{% endwith %} {% elif user_object.registration.coachregistration %} +
{% trans "Scientific coach:" %}
+
{{ user_object.registration.is_scientific_coach|yesno }}
+ +
{% trans "Accompanying coach:" %}
+
{{ user_object.registration.is_accompanying_coach|yesno }}
+
{% trans "Most recent degree:" %}
{{ user_object.registration.last_degree }}