mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-02-24 11:01:20 +00:00
Compare commits
No commits in common. "6595409df0f19d0a23604bbf07db787a10c3b91d" and "5261a524017a5ca79746f464d1b31d413ab5fd19" have entirely different histories.
6595409df0
...
5261a52401
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TFJM\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-03-30 19:13+0100\n"
|
||||
"POT-Creation-Date: 2024-03-29 19:18+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -22,22 +22,22 @@ msgid "API"
|
||||
msgstr "API"
|
||||
|
||||
#: draw/admin.py:39 draw/admin.py:57 draw/admin.py:75
|
||||
#: participation/admin.py:109 participation/models.py:254
|
||||
#: participation/admin.py:109 participation/models.py:250
|
||||
#: participation/tables.py:88
|
||||
msgid "teams"
|
||||
msgstr "équipes"
|
||||
|
||||
#: draw/admin.py:53 draw/admin.py:71 draw/admin.py:88 draw/models.py:24
|
||||
#: participation/admin.py:79 participation/admin.py:140
|
||||
#: participation/admin.py:171 participation/models.py:638
|
||||
#: participation/models.py:662 participation/models.py:732
|
||||
#: participation/admin.py:171 participation/models.py:419
|
||||
#: participation/models.py:443 participation/models.py:513
|
||||
#: registration/models.py:618
|
||||
#: registration/templates/registration/payment_form.html:53
|
||||
msgid "tournament"
|
||||
msgstr "tournoi"
|
||||
|
||||
#: draw/admin.py:92 draw/models.py:232 draw/models.py:427
|
||||
#: participation/models.py:736
|
||||
#: participation/models.py:517
|
||||
msgid "round"
|
||||
msgstr "tour"
|
||||
|
||||
@ -175,7 +175,7 @@ msgstr "La poule en cours, où les équipes choisissent leurs problèmes"
|
||||
msgid "rounds"
|
||||
msgstr "tours"
|
||||
|
||||
#: draw/models.py:255 participation/models.py:750
|
||||
#: draw/models.py:255 participation/models.py:531
|
||||
msgid "letter"
|
||||
msgstr "lettre"
|
||||
|
||||
@ -214,17 +214,17 @@ msgid "Pool {letter}{number}"
|
||||
msgstr "Poule {letter}{number}"
|
||||
|
||||
#: draw/models.py:408 draw/models.py:435 participation/admin.py:136
|
||||
#: participation/admin.py:155 participation/models.py:1227
|
||||
#: participation/models.py:1236 participation/tables.py:84
|
||||
#: participation/admin.py:155 participation/models.py:601
|
||||
#: participation/models.py:610 participation/tables.py:84
|
||||
msgid "pool"
|
||||
msgstr "poule"
|
||||
|
||||
#: draw/models.py:409 participation/models.py:1228
|
||||
#: draw/models.py:409 participation/models.py:602
|
||||
msgid "pools"
|
||||
msgstr "poules"
|
||||
|
||||
#: draw/models.py:421 participation/models.py:722 participation/models.py:1397
|
||||
#: participation/models.py:1427 participation/models.py:1469
|
||||
#: draw/models.py:421 participation/models.py:503 participation/models.py:771
|
||||
#: participation/models.py:801 participation/models.py:843
|
||||
msgid "participation"
|
||||
msgstr "participation"
|
||||
|
||||
@ -248,8 +248,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1."
|
||||
|
||||
#: draw/models.py:458 draw/models.py:481 participation/models.py:1250
|
||||
#: participation/models.py:1434
|
||||
#: draw/models.py:458 draw/models.py:481 participation/models.py:624
|
||||
#: participation/models.py:808
|
||||
#, python-brace-format
|
||||
msgid "Problem #{problem}"
|
||||
msgstr "Problème n°{problem}"
|
||||
@ -332,7 +332,7 @@ msgid "Continue draw"
|
||||
msgstr "Continuer le tirage"
|
||||
|
||||
#: draw/templates/draw/tournament_content.html:216 participation/admin.py:167
|
||||
#: participation/models.py:253 participation/models.py:653
|
||||
#: participation/models.py:249 participation/models.py:434
|
||||
#: registration/models.py:156 registration/models.py:609
|
||||
#: registration/tables.py:39
|
||||
#: registration/templates/registration/payment_form.html:52
|
||||
@ -344,10 +344,10 @@ msgstr "équipe"
|
||||
#: draw/templates/draw/tournament_content.html:228
|
||||
#: draw/templates/draw/tournament_content.html:229
|
||||
#: draw/templates/draw/tournament_content.html:230
|
||||
#: participation/templates/participation/pool_detail.html:97
|
||||
#: participation/templates/participation/pool_detail.html:101
|
||||
#: participation/templates/participation/pool_detail.html:106
|
||||
#: participation/templates/participation/pool_detail.html:110
|
||||
#: participation/templates/participation/pool_detail.html:85
|
||||
#: participation/templates/participation/pool_detail.html:89
|
||||
#: participation/templates/participation/pool_detail.html:94
|
||||
#: participation/templates/participation/pool_detail.html:98
|
||||
msgid "Room"
|
||||
msgstr "Salle"
|
||||
|
||||
@ -451,26 +451,26 @@ msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}"
|
||||
msgid "valid"
|
||||
msgstr "valide"
|
||||
|
||||
#: participation/admin.py:87 participation/models.py:674
|
||||
#: participation/admin.py:87 participation/models.py:455
|
||||
msgid "selected for final"
|
||||
msgstr "sélectionnée pour la finale"
|
||||
|
||||
#: participation/admin.py:124 participation/admin.py:183
|
||||
#: participation/models.py:1257 participation/tables.py:112
|
||||
#: participation/models.py:631 participation/tables.py:112
|
||||
msgid "defender"
|
||||
msgstr "défenseur⋅se"
|
||||
|
||||
#: participation/admin.py:128 participation/models.py:1264
|
||||
#: participation/models.py:1481
|
||||
#: participation/admin.py:128 participation/models.py:638
|
||||
#: participation/models.py:855
|
||||
msgid "opponent"
|
||||
msgstr "opposant⋅e"
|
||||
|
||||
#: participation/admin.py:132 participation/models.py:1271
|
||||
#: participation/models.py:1482
|
||||
#: participation/admin.py:132 participation/models.py:645
|
||||
#: participation/models.py:856
|
||||
msgid "reporter"
|
||||
msgstr "rapporteur⋅e"
|
||||
|
||||
#: participation/admin.py:187 participation/models.py:1432
|
||||
#: participation/admin.py:187 participation/models.py:806
|
||||
msgid "problem"
|
||||
msgstr "numéro de problème"
|
||||
|
||||
@ -478,7 +478,7 @@ msgstr "numéro de problème"
|
||||
msgid "This name is already used."
|
||||
msgstr "Ce nom est déjà utilisé."
|
||||
|
||||
#: participation/forms.py:37 participation/models.py:43
|
||||
#: participation/forms.py:37 participation/models.py:39
|
||||
msgid "The trigram must be composed of three uppercase letters."
|
||||
msgstr "Le trigramme doit être composé de trois lettres majuscules."
|
||||
|
||||
@ -529,7 +529,7 @@ 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:236
|
||||
#: participation/templates/participation/pool_detail.html:142
|
||||
#: participation/templates/participation/pool_detail.html:130
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
||||
|
||||
@ -576,32 +576,32 @@ msgstr "Ce⋅tte défenseur⋅se ne travaille pas sur ce problème."
|
||||
msgid "The PDF file must not have more than 2 pages."
|
||||
msgstr "Le fichier PDF ne doit pas avoir plus de 2 pages."
|
||||
|
||||
#: participation/models.py:36 participation/models.py:264
|
||||
#: participation/models.py:32 participation/models.py:260
|
||||
#: participation/tables.py:18 participation/tables.py:34
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: participation/models.py:42 participation/tables.py:39
|
||||
#: participation/models.py:38 participation/tables.py:39
|
||||
msgid "trigram"
|
||||
msgstr "trigramme"
|
||||
|
||||
#: participation/models.py:48
|
||||
#: participation/models.py:44
|
||||
msgid "This trigram is forbidden."
|
||||
msgstr "Ce trigramme est interdit."
|
||||
|
||||
#: participation/models.py:54
|
||||
#: participation/models.py:50
|
||||
msgid "access code"
|
||||
msgstr "code d'accès"
|
||||
|
||||
#: participation/models.py:55
|
||||
#: participation/models.py:51
|
||||
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:59
|
||||
#: participation/models.py:55
|
||||
msgid "motivation letter"
|
||||
msgstr "lettre de motivation"
|
||||
|
||||
#: participation/models.py:100
|
||||
#: participation/models.py:96
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} is not registered to any tournament. You can register the "
|
||||
@ -610,11 +610,11 @@ msgstr ""
|
||||
"L'équipe {trigram} n'est inscrite à aucun tournoi. Vous pouvez inscrire "
|
||||
"l'équipe à un tournoi en cliquant sur <a href='{url}'>ce lien</a>."
|
||||
|
||||
#: participation/models.py:105
|
||||
#: participation/models.py:101
|
||||
msgid "No tournament"
|
||||
msgstr "Pas de tournoi"
|
||||
|
||||
#: participation/models.py:111
|
||||
#: participation/models.py:107
|
||||
msgid ""
|
||||
"Registrations for the tournament of {tournament} are ending on the {date:%Y-"
|
||||
"%m-%d %H:%M}."
|
||||
@ -622,11 +622,11 @@ msgstr ""
|
||||
"Les inscriptions pour le tournoi de {tournament} se terminent le {date:%d/%m/"
|
||||
"%Y %H:%M}."
|
||||
|
||||
#: participation/models.py:116
|
||||
#: participation/models.py:112
|
||||
msgid "Registrations closure"
|
||||
msgstr "Clôture des inscriptions"
|
||||
|
||||
#: participation/models.py:123
|
||||
#: participation/models.py:119
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has not uploaded a motivation letter. You can upload your "
|
||||
@ -636,11 +636,11 @@ msgstr ""
|
||||
"envoyer votre lettre de motivation en cliquant sur <a href='{url}'>ce lien</"
|
||||
"a>."
|
||||
|
||||
#: participation/models.py:128
|
||||
#: participation/models.py:124
|
||||
msgid "No motivation letter"
|
||||
msgstr "Pas de lettre de motivation"
|
||||
|
||||
#: participation/models.py:137
|
||||
#: participation/models.py:133
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has less than 4 students ({nb_students}). You can invite "
|
||||
@ -650,11 +650,11 @@ msgstr ""
|
||||
"plus d'élèves à rejoindre l'équipe en utilisant le code d'invitation "
|
||||
"<strong>{code}</strong>."
|
||||
|
||||
#: participation/models.py:142
|
||||
#: participation/models.py:138
|
||||
msgid "Not enough students"
|
||||
msgstr "Pas assez d'élèves"
|
||||
|
||||
#: participation/models.py:149
|
||||
#: participation/models.py:145
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has no coach. You can invite a coach to join the team "
|
||||
@ -664,11 +664,11 @@ msgstr ""
|
||||
"encadrant⋅e à rejoindre l'équipe en utilisant le code d'invitation "
|
||||
"<strong>{code}</strong>."
|
||||
|
||||
#: participation/models.py:153
|
||||
#: participation/models.py:149
|
||||
msgid "No coach"
|
||||
msgstr "Pas d'encadrant⋅e"
|
||||
|
||||
#: participation/models.py:160
|
||||
#: participation/models.py:156
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has more than 6 students ({nb_students}) or more than 2 "
|
||||
@ -679,11 +679,11 @@ msgstr ""
|
||||
"encadrant⋅es ({nb_coaches}). Vous devez restreindre le nombre d'élèves et "
|
||||
"d'encadrant⋅es à 6 et 2, respectivement."
|
||||
|
||||
#: participation/models.py:165
|
||||
#: participation/models.py:161
|
||||
msgid "Too many members"
|
||||
msgstr "Trop de membres"
|
||||
|
||||
#: participation/models.py:172
|
||||
#: participation/models.py:168
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} is ready to be validated. You can request validation on "
|
||||
@ -692,11 +692,11 @@ msgstr ""
|
||||
"L'équipe {trigram} est prête à être validée. Vous pouvez demander la "
|
||||
"validation sur <a href='{url}'>la page de votre équipe</a>."
|
||||
|
||||
#: participation/models.py:177 participation/models.py:188
|
||||
#: participation/models.py:173 participation/models.py:184
|
||||
msgid "Validate team"
|
||||
msgstr "Valider l'équipe"
|
||||
|
||||
#: participation/models.py:183
|
||||
#: participation/models.py:179
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has enough participants, but is not ready to be "
|
||||
@ -709,7 +709,7 @@ msgstr ""
|
||||
"documents requis. Pour inviter plus de participant⋅es, utilisez le code "
|
||||
"d'invitation <strong>{code}</strong>."
|
||||
|
||||
#: participation/models.py:194
|
||||
#: participation/models.py:190
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"The team {trigram} has not been validated by the organizers yet. Please be "
|
||||
@ -718,107 +718,103 @@ msgstr ""
|
||||
"L'équipe {trigram} n'a pas encore été validée par les organisateurices. "
|
||||
"Merci de patienter."
|
||||
|
||||
#: participation/models.py:197 registration/models.py:492
|
||||
#: participation/models.py:193 registration/models.py:492
|
||||
msgid "Pending validation"
|
||||
msgstr "Validation en attente"
|
||||
|
||||
#: participation/models.py:250
|
||||
#: participation/models.py:246
|
||||
#, python-brace-format
|
||||
msgid "Team {name} ({trigram})"
|
||||
msgstr "Équipe {name} ({trigram})"
|
||||
|
||||
#: participation/models.py:269
|
||||
#: participation/models.py:265
|
||||
msgid "start"
|
||||
msgstr "début"
|
||||
|
||||
#: participation/models.py:274
|
||||
#: participation/models.py:270
|
||||
msgid "end"
|
||||
msgstr "fin"
|
||||
|
||||
#: participation/models.py:280
|
||||
#: participation/models.py:276
|
||||
#: participation/templates/participation/tournament_detail.html:18
|
||||
msgid "place"
|
||||
msgstr "lieu"
|
||||
|
||||
#: participation/models.py:284
|
||||
#: participation/models.py:280
|
||||
msgid "max team count"
|
||||
msgstr "nombre maximal d'équipes"
|
||||
|
||||
#: participation/models.py:289
|
||||
#: participation/models.py:285
|
||||
#: participation/templates/participation/tournament_detail.html:21
|
||||
msgid "price"
|
||||
msgstr "prix"
|
||||
|
||||
#: participation/models.py:294
|
||||
#: participation/models.py:290
|
||||
#: participation/templates/participation/tournament_detail.html:24
|
||||
msgid "remote"
|
||||
msgstr "à distance"
|
||||
|
||||
#: participation/models.py:299
|
||||
#: participation/models.py:295
|
||||
msgid "limit date for registrations"
|
||||
msgstr "date limite d'inscription"
|
||||
|
||||
#: participation/models.py:304
|
||||
#: participation/models.py:300
|
||||
msgid "limit date to upload solutions"
|
||||
msgstr "date limite pour envoyer les solutions"
|
||||
|
||||
#: participation/models.py:309
|
||||
#: participation/models.py:305
|
||||
msgid "random draw for solutions"
|
||||
msgstr "tirage au sort des solutions"
|
||||
|
||||
#: participation/models.py:314
|
||||
#: participation/models.py:310
|
||||
msgid "limit date to upload the syntheses for the first phase"
|
||||
msgstr "date limite pour envoyer les notes de synthèses pour la première phase"
|
||||
|
||||
#: participation/models.py:319
|
||||
#: participation/models.py:315
|
||||
msgid "date when the solutions for the second round become available"
|
||||
msgstr "date à laquelle les solutions pour le second tour sont accessibles"
|
||||
|
||||
#: participation/models.py:324
|
||||
#: participation/models.py:320
|
||||
msgid "limit date to upload the syntheses for the second phase"
|
||||
msgstr "date limite d'envoi des notes de synthèse pour la seconde phase"
|
||||
|
||||
#: participation/models.py:329
|
||||
#: participation/models.py:325
|
||||
#: participation/templates/participation/tournament_detail.html:48
|
||||
msgid "description"
|
||||
msgstr "description"
|
||||
|
||||
#: participation/models.py:335
|
||||
#: participation/models.py:331
|
||||
#: participation/templates/participation/tournament_detail.html:12
|
||||
msgid "organizers"
|
||||
msgstr "organisateur⋅rices"
|
||||
|
||||
#: participation/models.py:340
|
||||
#: participation/models.py:336
|
||||
#: participation/templates/participation/team_detail.html:133
|
||||
msgid "final"
|
||||
msgstr "finale"
|
||||
|
||||
#: participation/models.py:348
|
||||
msgid "Google Sheet ID"
|
||||
msgstr "ID de la feuille Google Sheets"
|
||||
|
||||
#: participation/models.py:639 registration/admin.py:125
|
||||
#: participation/models.py:420 registration/admin.py:125
|
||||
msgid "tournaments"
|
||||
msgstr "tournois"
|
||||
|
||||
#: participation/models.py:668
|
||||
#: participation/models.py:449
|
||||
msgid "valid team"
|
||||
msgstr "équipe valide"
|
||||
|
||||
#: participation/models.py:669
|
||||
#: participation/models.py:450
|
||||
msgid "The participation got the validation of the organizers."
|
||||
msgstr "La participation a été validée par les organisateur⋅rices."
|
||||
|
||||
#: participation/models.py:675
|
||||
#: participation/models.py:456
|
||||
msgid "The team is selected for the final tournament."
|
||||
msgstr "L'équipe est sélectionnée pour la finale."
|
||||
|
||||
#: participation/models.py:682
|
||||
#: participation/models.py:463
|
||||
#, python-brace-format
|
||||
msgid "Participation of the team {name} ({trigram})"
|
||||
msgstr "Participation de l'équipe {name} ({trigram})"
|
||||
|
||||
#: participation/models.py:689
|
||||
#: participation/models.py:470
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"<p>The team {trigram} has {nb_missing_payments} missing payments. Each "
|
||||
@ -831,11 +827,11 @@ msgstr ""
|
||||
"notification de bourse) pour participer au tournoi.</p><p>Les participant⋅es "
|
||||
"qui n'ont pas encore payé sont : {participants}.</p>"
|
||||
|
||||
#: participation/models.py:697
|
||||
#: participation/models.py:478
|
||||
msgid "Missing payments"
|
||||
msgstr "Paiements manquants"
|
||||
|
||||
#: participation/models.py:704
|
||||
#: participation/models.py:485
|
||||
msgid ""
|
||||
"<p>The solutions for the tournament of {tournament} are due on the {date:%Y-"
|
||||
"%m-%d %H:%M}.</p><p>You have currently sent <strong>{nb_solutions}</strong> "
|
||||
@ -850,40 +846,40 @@ msgstr ""
|
||||
"pouvez envoyer vos solutions sur <a href='{url}'>votre page de "
|
||||
"participation</a>.</p>"
|
||||
|
||||
#: participation/models.py:713
|
||||
#: participation/models.py:494
|
||||
msgid "Solutions due"
|
||||
msgstr "Rendu des solutions"
|
||||
|
||||
#: participation/models.py:723 participation/models.py:756
|
||||
#: participation/models.py:504 participation/models.py:537
|
||||
msgid "participations"
|
||||
msgstr "participations"
|
||||
|
||||
#: participation/models.py:738 participation/models.py:739
|
||||
#: participation/models.py:519 participation/models.py:520
|
||||
#, python-brace-format
|
||||
msgid "Round {round}"
|
||||
msgstr "Tour {round}"
|
||||
|
||||
#: participation/models.py:762
|
||||
#: participation/models.py:543
|
||||
msgid "juries"
|
||||
msgstr "jurys"
|
||||
|
||||
#: participation/models.py:771
|
||||
#: participation/models.py:552
|
||||
msgid "president of the jury"
|
||||
msgstr "président⋅e du jury"
|
||||
|
||||
#: participation/models.py:778
|
||||
#: participation/models.py:559
|
||||
msgid "BigBlueButton URL"
|
||||
msgstr "Lien BigBlueButton"
|
||||
|
||||
#: participation/models.py:779
|
||||
#: participation/models.py:560
|
||||
msgid "The link of the BBB visio for this pool."
|
||||
msgstr "Le lien du salon BBB pour cette poule."
|
||||
|
||||
#: participation/models.py:784
|
||||
#: participation/models.py:565
|
||||
msgid "results available"
|
||||
msgstr "résultats disponibles"
|
||||
|
||||
#: participation/models.py:785
|
||||
#: participation/models.py:566
|
||||
msgid ""
|
||||
"Check this case when results become accessible to teams. They stay "
|
||||
"accessible to you. Only averages are given."
|
||||
@ -892,37 +888,32 @@ msgstr ""
|
||||
"Ils restent toujours accessibles pour vous. Seules les moyennes sont "
|
||||
"communiquées."
|
||||
|
||||
#: participation/models.py:810
|
||||
#: participation/models.py:591
|
||||
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:1206
|
||||
#, 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:1221
|
||||
#: participation/models.py:595
|
||||
#, python-brace-format
|
||||
msgid "Pool of day {round} for tournament {tournament} with teams {teams}"
|
||||
msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}"
|
||||
|
||||
#: participation/models.py:1241
|
||||
#: participation/models.py:615
|
||||
msgid "position"
|
||||
msgstr "position"
|
||||
|
||||
#: participation/models.py:1248
|
||||
#: participation/models.py:622
|
||||
msgid "defended solution"
|
||||
msgstr "solution défendue"
|
||||
|
||||
#: participation/models.py:1281
|
||||
#: participation/models.py:655
|
||||
msgid "observer"
|
||||
msgstr "observateur⋅rice"
|
||||
|
||||
#: participation/models.py:1286
|
||||
#: participation/models.py:660
|
||||
msgid "penalties"
|
||||
msgstr "pénalités"
|
||||
|
||||
#: participation/models.py:1288
|
||||
#: participation/models.py:662
|
||||
msgid ""
|
||||
"Number of penalties for the defender. The defender will loose a 0.5 "
|
||||
"coefficient per penalty."
|
||||
@ -930,124 +921,124 @@ msgstr ""
|
||||
"Nombre de pénalités pour l'équipe défenseuse. Elle perd un coefficient 0.5 "
|
||||
"sur sa présentation orale par pénalité."
|
||||
|
||||
#: participation/models.py:1364 participation/models.py:1367
|
||||
#: participation/models.py:1370 participation/models.py:1373
|
||||
#: participation/models.py:738 participation/models.py:741
|
||||
#: participation/models.py:744 participation/models.py:747
|
||||
#, 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:1378
|
||||
#: participation/models.py:752
|
||||
#, python-brace-format
|
||||
msgid "Passage of {defender} for problem {problem}"
|
||||
msgstr "Passage de {defender} pour le problème {problem}"
|
||||
|
||||
#: participation/models.py:1382 participation/models.py:1391
|
||||
#: participation/models.py:1476 participation/models.py:1518
|
||||
#: participation/models.py:756 participation/models.py:765
|
||||
#: participation/models.py:850 participation/models.py:892
|
||||
msgid "passage"
|
||||
msgstr "passage"
|
||||
|
||||
#: participation/models.py:1383
|
||||
#: participation/models.py:757
|
||||
msgid "passages"
|
||||
msgstr "passages"
|
||||
|
||||
#: participation/models.py:1402
|
||||
#: participation/models.py:776
|
||||
msgid "difference"
|
||||
msgstr "différence"
|
||||
|
||||
#: participation/models.py:1403
|
||||
#: participation/models.py:777
|
||||
msgid "Score to add/remove on the final score"
|
||||
msgstr "Score à ajouter/retrancher au score final"
|
||||
|
||||
#: participation/models.py:1410
|
||||
#: participation/models.py:784
|
||||
msgid "tweak"
|
||||
msgstr "harmonisation"
|
||||
|
||||
#: participation/models.py:1411
|
||||
#: participation/models.py:785
|
||||
msgid "tweaks"
|
||||
msgstr "harmonisations"
|
||||
|
||||
#: participation/models.py:1439
|
||||
#: participation/models.py:813
|
||||
msgid "solution for the final tournament"
|
||||
msgstr "solution pour la finale"
|
||||
|
||||
#: participation/models.py:1444 participation/models.py:1487
|
||||
#: participation/models.py:818 participation/models.py:861
|
||||
msgid "file"
|
||||
msgstr "fichier"
|
||||
|
||||
#: participation/models.py:1454
|
||||
#: participation/models.py:828
|
||||
#, 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:1456
|
||||
#: participation/models.py:830
|
||||
msgid "for final"
|
||||
msgstr "pour la finale"
|
||||
|
||||
#: participation/models.py:1459
|
||||
#: participation/models.py:833
|
||||
msgid "solution"
|
||||
msgstr "solution"
|
||||
|
||||
#: participation/models.py:1460
|
||||
#: participation/models.py:834
|
||||
msgid "solutions"
|
||||
msgstr "solutions"
|
||||
|
||||
#: participation/models.py:1493
|
||||
#: participation/models.py:867
|
||||
#, python-brace-format
|
||||
msgid "Synthesis of {team} as {type} for problem {problem} of {defender}"
|
||||
msgstr ""
|
||||
"Note de synthèse de l'équipe {team} en tant que {type} pour le problème "
|
||||
"{problem} de {defender}"
|
||||
|
||||
#: participation/models.py:1501
|
||||
#: participation/models.py:875
|
||||
msgid "synthesis"
|
||||
msgstr "note de synthèse"
|
||||
|
||||
#: participation/models.py:1502
|
||||
#: participation/models.py:876
|
||||
msgid "syntheses"
|
||||
msgstr "notes de synthèse"
|
||||
|
||||
#: participation/models.py:1511
|
||||
#: participation/models.py:885
|
||||
msgid "jury"
|
||||
msgstr "jury"
|
||||
|
||||
#: participation/models.py:1523
|
||||
#: participation/models.py:897
|
||||
msgid "defender writing note"
|
||||
msgstr "note d'écrit de la défense"
|
||||
|
||||
#: participation/models.py:1529
|
||||
#: participation/models.py:903
|
||||
msgid "defender oral note"
|
||||
msgstr "note d'oral de la défense"
|
||||
|
||||
#: participation/models.py:1535
|
||||
#: participation/models.py:909
|
||||
msgid "opponent writing note"
|
||||
msgstr "note d'écrit de l'opposition"
|
||||
|
||||
#: participation/models.py:1541
|
||||
#: participation/models.py:915
|
||||
msgid "opponent oral note"
|
||||
msgstr "note d'oral de l'opposition"
|
||||
|
||||
#: participation/models.py:1547
|
||||
#: participation/models.py:921
|
||||
msgid "reporter writing note"
|
||||
msgstr "note d'écrit du rapportage"
|
||||
|
||||
#: participation/models.py:1553
|
||||
#: participation/models.py:927
|
||||
msgid "reporter oral note"
|
||||
msgstr "note d'oral du rapportage"
|
||||
|
||||
#: participation/models.py:1559
|
||||
#: participation/models.py:933
|
||||
msgid "observer note"
|
||||
msgstr "note de l'observation"
|
||||
|
||||
#: participation/models.py:1620
|
||||
#: participation/models.py:969
|
||||
#, python-brace-format
|
||||
msgid "Notes of {jury} for {passage}"
|
||||
msgstr "Notes de {jury} pour le {passage}"
|
||||
|
||||
#: participation/models.py:1623
|
||||
#: participation/models.py:972
|
||||
msgid "note"
|
||||
msgstr "note"
|
||||
|
||||
#: participation/models.py:1624
|
||||
#: participation/models.py:973
|
||||
msgid "notes"
|
||||
msgstr "notes"
|
||||
|
||||
@ -1086,9 +1077,9 @@ msgstr "Pas d'équipe définie"
|
||||
#: participation/templates/participation/passage_detail.html:54
|
||||
#: participation/templates/participation/passage_detail.html:153
|
||||
#: participation/templates/participation/passage_detail.html:159
|
||||
#: participation/templates/participation/pool_detail.html:129
|
||||
#: participation/templates/participation/pool_detail.html:147
|
||||
#: participation/templates/participation/pool_detail.html:152
|
||||
#: participation/templates/participation/pool_detail.html:117
|
||||
#: participation/templates/participation/pool_detail.html:135
|
||||
#: participation/templates/participation/pool_detail.html:140
|
||||
#: participation/templates/participation/team_detail.html:151
|
||||
#: participation/templates/participation/team_detail.html:215
|
||||
#: participation/templates/participation/tournament_form.html:12
|
||||
@ -1189,7 +1180,7 @@ msgstr "Envoyer une solution"
|
||||
|
||||
#: participation/templates/participation/participation_detail.html:65
|
||||
#: participation/templates/participation/passage_detail.html:165
|
||||
#: participation/templates/participation/pool_detail.html:157
|
||||
#: participation/templates/participation/pool_detail.html:145
|
||||
#: participation/templates/participation/team_detail.html:210
|
||||
#: participation/templates/participation/upload_motivation_letter.html:13
|
||||
#: participation/templates/participation/upload_notes.html:17
|
||||
@ -1345,55 +1336,47 @@ msgstr "Tout télécharger"
|
||||
msgid "BigBlueButton link:"
|
||||
msgstr "Lien BigBlueButton :"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:70
|
||||
msgid "Notation sheet:"
|
||||
msgstr "Feuille de notation :"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:74
|
||||
msgid "Go to the Google Sheets page of the pool"
|
||||
msgstr "Aller à la page Google Sheets de la poule"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:83
|
||||
#: participation/templates/participation/pool_detail.html:71
|
||||
#: participation/templates/participation/tournament_detail.html:98
|
||||
msgid "Ranking"
|
||||
msgstr "Classement"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:97
|
||||
#: participation/templates/participation/pool_detail.html:85
|
||||
msgid "Download the scale sheet"
|
||||
msgstr "Télécharger la feuille de barème"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:106
|
||||
#: participation/templates/participation/pool_detail.html:94
|
||||
msgid "Download the final notation sheet"
|
||||
msgstr "Télécharger la fiche de notation finale"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:115
|
||||
#: participation/templates/participation/pool_detail.html:103
|
||||
msgid "Download all notation sheets"
|
||||
msgstr "Télécharger toutes les fiches de notation"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:120
|
||||
#: participation/templates/participation/pool_detail.html:108
|
||||
msgid "Upload notes from a CSV file"
|
||||
msgstr "Soumettre les notes à partir d'un fichier CSV"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:128
|
||||
#: participation/templates/participation/pool_detail.html:141
|
||||
#: participation/templates/participation/pool_detail.html:116
|
||||
#: participation/templates/participation/pool_detail.html:129
|
||||
msgid "Add passage"
|
||||
msgstr "Ajouter un passage"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:130
|
||||
#: participation/templates/participation/pool_detail.html:151
|
||||
#: participation/templates/participation/pool_detail.html:118
|
||||
#: participation/templates/participation/pool_detail.html:139
|
||||
msgid "Update teams"
|
||||
msgstr "Modifier les équipes"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:137
|
||||
#: participation/templates/participation/pool_detail.html:125
|
||||
msgid "Passages"
|
||||
msgstr "Passages"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:146
|
||||
#: participation/templates/participation/pool_detail.html:134
|
||||
#: participation/templates/participation/pool_form.html:11
|
||||
msgid "Update pool"
|
||||
msgstr "Modifier la poule"
|
||||
|
||||
#: participation/templates/participation/pool_detail.html:156
|
||||
#: participation/templates/participation/pool_detail.html:144
|
||||
msgid "Upload notes"
|
||||
msgstr "Envoyer les notes"
|
||||
|
||||
@ -1887,35 +1870,35 @@ msgstr "Nouveau compte de juré⋅e pour le TFJM²"
|
||||
msgid "The jury {name} has been successfully added!"
|
||||
msgstr "{name} a été ajouté⋅e avec succès en tant que juré⋅e !"
|
||||
|
||||
#: participation/views.py:1039
|
||||
#: participation/views.py:1038
|
||||
#, python-brace-format
|
||||
msgid "The jury {name} has been successfully removed!"
|
||||
msgstr "{name} a été retiré⋅e avec succès du jury !"
|
||||
|
||||
#: participation/views.py:1065
|
||||
#: participation/views.py:1064
|
||||
#, python-brace-format
|
||||
msgid "The jury {name} has been successfully promoted president!"
|
||||
msgstr "{name} a été nommé⋅e président⋅e du jury !"
|
||||
|
||||
#: participation/views.py:1093
|
||||
#: participation/views.py:1092
|
||||
msgid "The following user is not registered as a jury:"
|
||||
msgstr "L'utilisateur⋅rice suivant n'est pas inscrit⋅e en tant que juré⋅e :"
|
||||
|
||||
#: participation/views.py:1107
|
||||
#: participation/views.py:1106
|
||||
msgid "Notes were successfully uploaded."
|
||||
msgstr "Les notes ont bien été envoyées."
|
||||
|
||||
#: participation/views.py:1740
|
||||
#: participation/views.py:1739
|
||||
#, python-brace-format
|
||||
msgid "Notation sheets of pool {pool} of {tournament}.zip"
|
||||
msgstr "Feuilles de notations pour la poule {pool} du tournoi {tournament}.zip"
|
||||
|
||||
#: participation/views.py:1745
|
||||
#: participation/views.py:1744
|
||||
#, python-brace-format
|
||||
msgid "Notation sheets of {tournament}.zip"
|
||||
msgstr "Feuilles de notation de {tournament}.zip"
|
||||
|
||||
#: participation/views.py:1924
|
||||
#: participation/views.py:1922
|
||||
msgid "You can't upload a synthesis after the deadline."
|
||||
msgstr "Vous ne pouvez pas envoyer de note de synthèse après la date limite."
|
||||
|
||||
|
@ -36,6 +36,4 @@ class Command(BaseCommand):
|
||||
self.stdout.write(f"Parsing notation sheet for pool {pool.short_name} for {tournament}")
|
||||
pool.parse_spreadsheet()
|
||||
|
||||
tournament.parse_tweaks_spreadskeets()
|
||||
|
||||
sleep(1)
|
||||
|
@ -439,10 +439,10 @@ class Tournament(models.Model):
|
||||
else:
|
||||
worksheet = spreadsheet.worksheet("Classement final")
|
||||
|
||||
if worksheet.index != self.pools.count():
|
||||
worksheet.update_index(self.pools.count())
|
||||
if worksheet.index < 100:
|
||||
worksheet.update_index(self.pools.count() + 1)
|
||||
|
||||
header = [["Équipe", "Score jour 1", "Harmonisation 1", "Score jour 2", "Harmonisation 2", "Total", "Rang"]]
|
||||
header = [["Équipe", "Points jour 1", "Points jour 2", "Total", "Harmonisation", "Total final", "Rang"]]
|
||||
lines = []
|
||||
participations = self.participations.filter(pools__round=1, pools__tournament=self).all()
|
||||
for i, participation in enumerate(participations):
|
||||
@ -451,19 +451,13 @@ class Tournament(models.Model):
|
||||
|
||||
pool1 = self.pools.get(round=1, participations=participation)
|
||||
passage1 = pool1.passages.get(defender=participation)
|
||||
tweak1_qs = Tweak.objects.filter(pool=pool1, participation=participation)
|
||||
tweak1 = tweak1_qs.get() if tweak1_qs.exists() else None
|
||||
|
||||
pool2 = self.pools.get(round=2, participations=participation)
|
||||
passage2 = pool2.passages.get(defender=participation)
|
||||
tweak2_qs = Tweak.objects.filter(pool=pool2, participation=participation)
|
||||
tweak2 = tweak2_qs.get() if tweak2_qs.exists() else None
|
||||
|
||||
line.append(f"=SIERREUR('Poule {pool1.short_name}'!$D{pool1.juries.count() + 10 + passage1.position}; 0)")
|
||||
line.append(tweak1.diff if tweak1 else 0)
|
||||
line.append(f"=SIERREUR('Poule {pool2.short_name}'!$D{pool2.juries.count() + 10 + passage2.position}; 0)")
|
||||
line.append(tweak2.diff if tweak2 else 0)
|
||||
line.append(f"=$B{i + 2} + $C{i + 2} + $D{i + 2} + E{i + 2}")
|
||||
line.append(f"=$B{i + 2} + $C{i + 2}")
|
||||
line.append(0)
|
||||
line.append(f"=$D{i + 2} + $E{i + 2}")
|
||||
line.append(f"=RANG($F{i + 2}; $F$2:$F${participations.count() + 1})")
|
||||
|
||||
final_ranking = [["", "", ""], ["", "", ""], ["Équipe", "Score", "Rang"],
|
||||
@ -481,7 +475,7 @@ class Tournament(models.Model):
|
||||
format_requests = []
|
||||
|
||||
# Set the width of the columns
|
||||
column_widths = [("A", 300), ("B", 120), ("C", 120), ("D", 120), ("E", 120), ("F", 120), ("G", 120)]
|
||||
column_widths = [("A", 250), ("B", 100), ("C", 100), ("D", 100), ("E", 100), ("F", 100), ("G", 100)]
|
||||
for column, width in column_widths:
|
||||
grid_range = a1_range_to_grid_range(column, worksheet.id)
|
||||
format_requests.append({
|
||||
@ -537,9 +531,7 @@ class Tournament(models.Model):
|
||||
# Set background color for headers and footers
|
||||
bg_colors = [("A1:AF", (1, 1, 1)),
|
||||
(f"A1:G1", (0.8, 0.8, 0.8)),
|
||||
(f"A2:B{participations.count() + 1}", (0.9, 0.9, 0.9)),
|
||||
(f"C2:C{participations.count() + 1}", (1, 1, 1)),
|
||||
(f"D2:D{participations.count() + 1}", (0.9, 0.9, 0.9)),
|
||||
(f"A2:D{participations.count() + 1}", (0.9, 0.9, 0.9)),
|
||||
(f"E2:E{participations.count() + 1}", (1, 1, 1)),
|
||||
(f"F2:G{participations.count() + 1}", (0.9, 0.9, 0.9)),
|
||||
(f"A{participations.count() + 4}:C{participations.count() + 4}", (0.8, 0.8, 0.8)),
|
||||
@ -555,19 +547,13 @@ class Tournament(models.Model):
|
||||
})
|
||||
|
||||
# Set number format, display only one decimal
|
||||
number_format_ranges = [(f"B2:B{participations.count() + 1}", "0.0"),
|
||||
(f"C2:C{participations.count() + 1}", "0"),
|
||||
(f"D2:D{participations.count() + 1}", "0.0"),
|
||||
(f"E2:E{participations.count() + 1}", "0"),
|
||||
(f"F2:F{participations.count() + 1}", "0.0"),
|
||||
(f"G2:G{participations.count() + 1}", "0"),
|
||||
(f"B{participations.count() + 5}:B{2 * participations.count() + 5}", "0.0"),
|
||||
(f"C{participations.count() + 5}:C{2 * participations.count() + 5}", "0"), ]
|
||||
for number_format_range, pattern in number_format_ranges:
|
||||
number_format_ranges = [f"B2:D{participations.count() + 1}", f"F2:F{participations.count() + 1}",
|
||||
f"B{participations.count() + 5}:B{2 * participations.count() + 5}", ]
|
||||
for number_format_range in number_format_ranges:
|
||||
format_requests.append({
|
||||
"repeatCell": {
|
||||
"range": a1_range_to_grid_range(number_format_range, worksheet.id),
|
||||
"cell": {"userEnteredFormat": {"numberFormat": {"type": "NUMBER", "pattern": pattern}}},
|
||||
"cell": {"userEnteredFormat": {"numberFormat": {"type": "NUMBER", "pattern": "0.0"}}},
|
||||
"fields": "userEnteredFormat.numberFormat",
|
||||
}
|
||||
})
|
||||
@ -581,8 +567,7 @@ class Tournament(models.Model):
|
||||
})
|
||||
|
||||
# Protect the header, the juries list, the footer and the ranking
|
||||
protected_ranges = [f"A1:G1", f"A2:B{participations.count() + 1}",
|
||||
f"D2:D{participations.count() + 1}", f"F2:G{participations.count() + 1}",
|
||||
protected_ranges = [f"A1:G1", f"A2:D{participations.count() + 1}", f"F2:G{participations.count() + 1}",
|
||||
f"A{participations.count() + 4}:C{2 * participations.count() + 4}", ]
|
||||
for protected_range in protected_ranges:
|
||||
format_requests.append({
|
||||
@ -599,35 +584,6 @@ class Tournament(models.Model):
|
||||
body = {"requests": format_requests}
|
||||
worksheet.client.batch_update(spreadsheet.id, body)
|
||||
|
||||
def parse_tweaks_spreadskeets(self):
|
||||
gc = gspread.service_account_from_dict(settings.GOOGLE_SERVICE_CLIENT)
|
||||
spreadsheet = gc.open_by_key(self.notes_sheet_id)
|
||||
worksheet = spreadsheet.worksheet("Classement final")
|
||||
|
||||
score_cell = worksheet.find("Score")
|
||||
max_row = score_cell.row - 3
|
||||
data = worksheet.get_values(f"A2:E{max_row}")
|
||||
for line in data:
|
||||
trigram = line[0][-4:-1]
|
||||
participation = self.participations.get(team__trigram=trigram)
|
||||
pool1 = self.pools.get(round=1, participations=participation)
|
||||
pool2 = self.pools.get(round=2, participations=participation)
|
||||
tweak1_qs = Tweak.objects.filter(pool=pool1, participation=participation)
|
||||
tweak2_qs = Tweak.objects.filter(pool=pool2, participation=participation)
|
||||
tweak1_nb, tweak2_nb = int(line[2]), int(line[4])
|
||||
if not tweak1_nb:
|
||||
tweak1_qs.delete()
|
||||
else:
|
||||
tweak1_qs.update_or_create(defaults={'diff': tweak1_nb},
|
||||
create_defaults={'diff': tweak1_nb, 'pool': pool1,
|
||||
'participation': participation})
|
||||
if not tweak2_nb:
|
||||
tweak2_qs.delete()
|
||||
else:
|
||||
tweak2_qs.update_or_create(defaults={'diff': tweak2_nb},
|
||||
create_defaults={'diff': tweak2_nb, 'pool': pool2,
|
||||
'participation': participation})
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse_lazy("participation:tournament_detail", args=(self.pk,))
|
||||
|
||||
@ -1013,7 +969,7 @@ class Pool(models.Model):
|
||||
})
|
||||
|
||||
# Set the width of the columns
|
||||
column_widths = [("A", 300), ("B", 30)]
|
||||
column_widths = [("A", 250), ("B", 30)]
|
||||
for passage in passages:
|
||||
column_widths.append((f"{getcol(3 + passage_width * (passage.position - 1))}"
|
||||
f":{getcol(8 + passage_width * (passage.position - 1))}", 75))
|
||||
|
@ -64,18 +64,6 @@
|
||||
|
||||
<dt class="col-sm-3">{% trans "BigBlueButton link:" %}</dt>
|
||||
<dd class="col-sm-9">{{ pool.bbb_url|urlize }}</dd>
|
||||
|
||||
{% if user.registration.is_admin or user.registration.is_volunteer %}
|
||||
{% if user.registration.is_admin or user.registration in pool.tournament.organizers.all or user.registration == pool.jury_president %}
|
||||
<dt class="col-sm-3">{% trans "Notation sheet:" %}</dt>
|
||||
<dd class="col-sm-9">
|
||||
<a class="btn btn-success" href="https://docs.google.com/spreadsheets/d/{{ pool.tournament.notes_sheet_id }}/edit">
|
||||
<i class="fas fa-table"></i>
|
||||
{% trans "Go to the Google Sheets page of the pool" %}
|
||||
</a>
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</dl>
|
||||
|
||||
<div class="card bg-body shadow">
|
||||
|
@ -194,12 +194,6 @@
|
||||
Archive de toutes les notes de synthèse triées par poule et par passage
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://docs.google.com/spreadsheets/d/{{ tournament.notes_sheet_id }}/edit">
|
||||
<i class="fas fa-table"></i>
|
||||
Tableur de notes sur Google Sheets
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% url "participation:tournament_notation_sheets" tournament_id=tournament.id %}">
|
||||
Archive de toutes les feuilles de notes à imprimer triées par poule
|
||||
|
Loading…
x
Reference in New Issue
Block a user