Teams can't see problems for the second round until the given date

This commit is contained in:
Yohann D'ANELLO 2020-05-05 18:29:02 +02:00
parent 28abf730a2
commit 4ce767d451
4 changed files with 116 additions and 98 deletions

View File

@ -38,6 +38,8 @@ class TournamentForm(forms.ModelForm):
"date_inscription": DateTimePickerInput(), "date_inscription": DateTimePickerInput(),
"date_solutions": DateTimePickerInput(), "date_solutions": DateTimePickerInput(),
"date_syntheses": DateTimePickerInput(), "date_syntheses": DateTimePickerInput(),
"date_solutions_2": DateTimePickerInput(),
"date_syntheses_2": DateTimePickerInput(),
} }

View File

@ -456,6 +456,9 @@ class PoolDetailView(LoginRequiredMixin, DetailView):
pool = self.get_object() pool = self.get_object()
if "solutions_zip" in request.POST: if "solutions_zip" in request.POST:
if user.participates and pool.round == 2 and pool.tournament.date_solutions_2 > timezone.now():
raise PermissionDenied
out = BytesIO() out = BytesIO()
zf = zipfile.ZipFile(out, "w") zf = zipfile.ZipFile(out, "w")
@ -469,6 +472,9 @@ class PoolDetailView(LoginRequiredMixin, DetailView):
.format(_("Solutions of a pool.zip").replace(" ", "%20")) .format(_("Solutions of a pool.zip").replace(" ", "%20"))
return resp return resp
elif "syntheses_zip" in request.POST and user.organizes: elif "syntheses_zip" in request.POST and user.organizes:
if user.participates and pool.round == 2 and pool.tournament.date_solutions_2 > timezone.now():
raise PermissionDenied
out = BytesIO() out = BytesIO()
zf = zipfile.ZipFile(out, "w") zf = zipfile.ZipFile(out, "w")

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TFJM2\n" "Project-Id-Version: TFJM2\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-05 06:09+0200\n" "POT-Creation-Date: 2020-05-05 18:27+0200\n"
"PO-Revision-Date: 2020-04-29 02:30+0000\n" "PO-Revision-Date: 2020-04-29 02:30+0000\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n" "Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: fr <LL@li.org>\n" "Language-Team: fr <LL@li.org>\n"
@ -43,8 +43,8 @@ msgid "email"
msgstr "Adresse électronique" msgstr "Adresse électronique"
#: apps/member/models.py:26 apps/member/models.py:218 apps/member/models.py:234 #: apps/member/models.py:26 apps/member/models.py:218 apps/member/models.py:234
#: apps/member/models.py:265 apps/tournament/models.py:196 #: apps/member/models.py:265 apps/tournament/models.py:217
#: apps/tournament/models.py:261 templates/member/tfjmuser_detail.html:16 #: apps/tournament/models.py:291 templates/member/tfjmuser_detail.html:16
msgid "team" msgid "team"
msgstr "équipe" msgstr "équipe"
@ -116,7 +116,7 @@ msgstr "téléphone du responsable"
msgid "responsible email" msgid "responsible email"
msgstr "email du responsable" msgstr "email du responsable"
#: apps/member/models.py:124 apps/tournament/models.py:35 #: apps/member/models.py:124 apps/tournament/models.py:37
#: templates/member/tfjmuser_detail.html:67 #: templates/member/tfjmuser_detail.html:67
#: templates/tournament/tournament_detail.html:36 #: templates/tournament/tournament_detail.html:36
msgid "description" msgid "description"
@ -134,13 +134,13 @@ msgstr "Organisateur"
msgid "Coach" msgid "Coach"
msgstr "Encadrant" msgstr "Encadrant"
#: apps/member/models.py:139 apps/tournament/models.py:79 #: apps/member/models.py:139 apps/tournament/models.py:81
#: apps/tournament/models.py:157 #: apps/tournament/models.py:178
msgid "year" msgid "year"
msgstr "année" msgstr "année"
#: apps/member/models.py:155 apps/member/models.py:191 #: apps/member/models.py:155 apps/member/models.py:191
#: apps/tournament/models.py:254 #: apps/tournament/models.py:284
msgid "user" msgid "user"
msgstr "utilisateur" msgstr "utilisateur"
@ -176,7 +176,7 @@ msgstr "Autorisation de droit à l'image"
msgid "Sanitary plug" msgid "Sanitary plug"
msgstr "Fiche sanitaire" msgstr "Fiche sanitaire"
#: apps/member/models.py:200 apps/tournament/models.py:272 #: apps/member/models.py:200 apps/tournament/models.py:302
msgid "Scholarship" msgid "Scholarship"
msgstr "Bourse" msgstr "Bourse"
@ -222,7 +222,7 @@ msgstr "solution pour la finale"
msgid "solution" msgid "solution"
msgstr "solution" msgstr "solution"
#: apps/member/models.py:252 apps/tournament/models.py:214 #: apps/member/models.py:252 apps/tournament/models.py:244
msgid "solutions" msgid "solutions"
msgstr "solutions" msgstr "solutions"
@ -247,15 +247,15 @@ msgstr "Rapporteur"
msgid "source" msgid "source"
msgstr "source" msgstr "source"
#: apps/member/models.py:280 apps/tournament/models.py:219 #: apps/member/models.py:280 apps/tournament/models.py:249
msgid "Round 1" msgid "Round 1"
msgstr "Tour 1" msgstr "Tour 1"
#: apps/member/models.py:281 apps/tournament/models.py:220 #: apps/member/models.py:281 apps/tournament/models.py:250
msgid "Round 2" msgid "Round 2"
msgstr "Tour 2" msgstr "Tour 2"
#: apps/member/models.py:283 apps/tournament/models.py:222 #: apps/member/models.py:283 apps/tournament/models.py:252
#: templates/tournament/pool_detail.html:18 #: templates/tournament/pool_detail.html:18
msgid "round" msgid "round"
msgstr "tour" msgstr "tour"
@ -323,8 +323,8 @@ msgstr "Profils orphelins"
msgid "Organizers" msgid "Organizers"
msgstr "Organisateurs" msgstr "Organisateurs"
#: apps/tournament/apps.py:7 apps/tournament/models.py:104 #: apps/tournament/apps.py:7 apps/tournament/models.py:110
#: apps/tournament/models.py:126 templates/tournament/pool_detail.html:21 #: apps/tournament/models.py:147 templates/tournament/pool_detail.html:21
#: templates/tournament/team_detail.html:21 #: templates/tournament/team_detail.html:21
msgid "tournament" msgid "tournament"
msgstr "tournoi" msgstr "tournoi"
@ -337,220 +337,220 @@ msgstr "Ce tournoi existe déjà."
msgid "The final tournament was already defined." msgid "The final tournament was already defined."
msgstr "Le tournoi de la finale est déjà défini." msgstr "Le tournoi de la finale est déjà défini."
#: apps/tournament/forms.py:53 #: apps/tournament/forms.py:55
msgid "This organizer already exist." msgid "This organizer already exist."
msgstr "Cet organisateur existe déjà." msgstr "Cet organisateur existe déjà."
#: apps/tournament/forms.py:78 #: apps/tournament/forms.py:81
msgid "The trigram must be composed of three upcase letters." msgid "The trigram must be composed of three upcase letters."
msgstr "Le trigramme doit être composé de trois lettres en majuscules." msgstr "Le trigramme doit être composé de trois lettres en majuscules."
#: apps/tournament/forms.py:82 #: apps/tournament/forms.py:85
msgid "This trigram is already used." msgid "This trigram is already used."
msgstr "Ce trigramme est déjà utilisé." msgstr "Ce trigramme est déjà utilisé."
#: apps/tournament/forms.py:85 #: apps/tournament/forms.py:88
msgid "This name is already used." msgid "This name is already used."
msgstr "Ce nom est déjà utilisé." msgstr "Ce nom est déjà utilisé."
#: apps/tournament/forms.py:88 #: apps/tournament/forms.py:91
msgid "This tournament is already closed." msgid "This tournament is already closed."
msgstr "Ce tournoi est déjà fermé." msgstr "Ce tournoi est déjà fermé."
#: apps/tournament/forms.py:95 #: apps/tournament/forms.py:98
msgid "Access code" msgid "Access code"
msgstr "Code d'accès" msgstr "Code d'accès"
#: apps/tournament/forms.py:103 #: apps/tournament/forms.py:106
msgid "The access code must be composed of 6 alphanumeric characters." msgid "The access code must be composed of 6 alphanumeric characters."
msgstr "Le code d'accès doit être composé de 6 caractères alphanumériques." msgstr "Le code d'accès doit être composé de 6 caractères alphanumériques."
#: apps/tournament/forms.py:107 #: apps/tournament/forms.py:110
msgid "This access code is invalid." msgid "This access code is invalid."
msgstr "Ce code d'accès est invalide." msgstr "Ce code d'accès est invalide."
#: apps/tournament/forms.py:110 #: apps/tournament/forms.py:113
msgid "The team is already validated." msgid "The team is already validated."
msgstr "L'équipe est déjà validée." msgstr "L'équipe est déjà validée."
#: apps/tournament/forms.py:118 #: apps/tournament/forms.py:121
msgid "Problem" msgid "Problem"
msgstr "Problème" msgstr "Problème"
#: apps/tournament/forms.py:119 #: apps/tournament/forms.py:122
#, python-brace-format #, python-brace-format
msgid "Problem #{problem:d}" msgid "Problem #{problem:d}"
msgstr "Problème n°{problem:d}" msgstr "Problème n°{problem:d}"
#: apps/tournament/forms.py:136 apps/tournament/forms.py:149 #: apps/tournament/forms.py:139 apps/tournament/forms.py:152
#: apps/tournament/forms.py:162 #: apps/tournament/forms.py:165
msgid "Choose a team..." msgid "Choose a team..."
msgstr "Choisir une équipe ..." msgstr "Choisir une équipe ..."
#: apps/tournament/forms.py:137 #: apps/tournament/forms.py:140
msgid "Team 1" msgid "Team 1"
msgstr "Équipe 1" msgstr "Équipe 1"
#: apps/tournament/forms.py:144 #: apps/tournament/forms.py:147
msgid "Problem defended by team 1" msgid "Problem defended by team 1"
msgstr "Problème défendu par l'équipe 1" msgstr "Problème défendu par l'équipe 1"
#: apps/tournament/forms.py:150 #: apps/tournament/forms.py:153
msgid "Team 2" msgid "Team 2"
msgstr "Équipe 2" msgstr "Équipe 2"
#: apps/tournament/forms.py:157 #: apps/tournament/forms.py:160
msgid "Problem defended by team 2" msgid "Problem defended by team 2"
msgstr "Problème défendu par l'équipe 2" msgstr "Problème défendu par l'équipe 2"
#: apps/tournament/forms.py:163 #: apps/tournament/forms.py:166
msgid "Team 3" msgid "Team 3"
msgstr "Équipe 3" msgstr "Équipe 3"
#: apps/tournament/forms.py:170 #: apps/tournament/forms.py:173
msgid "Problem defended by team 3" msgid "Problem defended by team 3"
msgstr "Problème défendu par l'équipe 3" msgstr "Problème défendu par l'équipe 3"
#: apps/tournament/models.py:12 apps/tournament/models.py:114 #: apps/tournament/models.py:14 apps/tournament/models.py:135
#: templates/tournament/team_detail.html:12 #: templates/tournament/team_detail.html:12
msgid "name" msgid "name"
msgstr "nom" msgstr "nom"
#: apps/tournament/models.py:18 templates/tournament/tournament_detail.html:12 #: apps/tournament/models.py:20 templates/tournament/tournament_detail.html:12
msgid "organizers" msgid "organizers"
msgstr "organisateurs" msgstr "organisateurs"
#: apps/tournament/models.py:22 templates/tournament/tournament_detail.html:15 #: apps/tournament/models.py:24 templates/tournament/tournament_detail.html:15
msgid "size" msgid "size"
msgstr "taille" msgstr "taille"
#: apps/tournament/models.py:27 templates/tournament/tournament_detail.html:18 #: apps/tournament/models.py:29 templates/tournament/tournament_detail.html:18
msgid "place" msgid "place"
msgstr "lieu" msgstr "lieu"
#: apps/tournament/models.py:31 templates/tournament/tournament_detail.html:21 #: apps/tournament/models.py:33 templates/tournament/tournament_detail.html:21
msgid "price" msgid "price"
msgstr "prix" msgstr "prix"
#: apps/tournament/models.py:40 #: apps/tournament/models.py:42
msgid "date start" msgid "date start"
msgstr "date de début" msgstr "date de début"
#: apps/tournament/models.py:45 #: apps/tournament/models.py:47
msgid "date end" msgid "date end"
msgstr "date de fin" msgstr "date de fin"
#: apps/tournament/models.py:50 templates/tournament/tournament_detail.html:27 #: apps/tournament/models.py:52 templates/tournament/tournament_detail.html:27
msgid "date of registration closing" msgid "date of registration closing"
msgstr "date de clôture des inscriptions" msgstr "date de clôture des inscriptions"
#: apps/tournament/models.py:55 templates/tournament/tournament_detail.html:30 #: apps/tournament/models.py:57 templates/tournament/tournament_detail.html:30
msgid "date of maximal solution submission" msgid "date of maximal solution submission"
msgstr "date d'envoi maximal des solutions" msgstr "date d'envoi maximal des solutions"
#: apps/tournament/models.py:60 #: apps/tournament/models.py:62
msgid "date of maximal syntheses submission for the first round" msgid "date of maximal syntheses submission for the first round"
msgstr "date d'envoi maximal des notes de synthèses du premier tour" msgstr "date d'envoi maximal des notes de synthèses du premier tour"
#: apps/tournament/models.py:65 #: apps/tournament/models.py:67
msgid "date when solutions of round 2 are available" msgid "date when solutions of round 2 are available"
msgstr "date à partir de laquelle les solutions du tour 2 sont disponibles" msgstr "date à partir de laquelle les solutions du tour 2 sont disponibles"
#: apps/tournament/models.py:70 #: apps/tournament/models.py:72
msgid "date of maximal syntheses submission for the second round" msgid "date of maximal syntheses submission for the second round"
msgstr "date d'envoi maximal des notes de synthèses pour le second tour" msgstr "date d'envoi maximal des notes de synthèses pour le second tour"
#: apps/tournament/models.py:74 #: apps/tournament/models.py:76
msgid "final tournament" msgid "final tournament"
msgstr "finale" msgstr "finale"
#: apps/tournament/models.py:105 #: apps/tournament/models.py:111
msgid "tournaments" msgid "tournaments"
msgstr "tournois" msgstr "tournois"
#: apps/tournament/models.py:119 templates/tournament/team_detail.html:15 #: apps/tournament/models.py:140 templates/tournament/team_detail.html:15
msgid "trigram" msgid "trigram"
msgstr "trigramme" msgstr "trigramme"
#: apps/tournament/models.py:131 #: apps/tournament/models.py:152
msgid "inscription date" msgid "inscription date"
msgstr "date d'inscription" msgstr "date d'inscription"
#: apps/tournament/models.py:137 apps/tournament/models.py:281 #: apps/tournament/models.py:158 apps/tournament/models.py:311
msgid "Registration not validated" msgid "Registration not validated"
msgstr "Inscription non validée" msgstr "Inscription non validée"
#: apps/tournament/models.py:138 apps/tournament/models.py:282 #: apps/tournament/models.py:159 apps/tournament/models.py:312
msgid "Waiting for validation" msgid "Waiting for validation"
msgstr "En attente de validation" msgstr "En attente de validation"
#: apps/tournament/models.py:139 apps/tournament/models.py:283 #: apps/tournament/models.py:160 apps/tournament/models.py:313
msgid "Registration validated" msgid "Registration validated"
msgstr "Inscription validée" msgstr "Inscription validée"
#: apps/tournament/models.py:141 apps/tournament/models.py:285 #: apps/tournament/models.py:162 apps/tournament/models.py:315
#: templates/tournament/team_detail.html:30 #: templates/tournament/team_detail.html:30
msgid "validation status" msgid "validation status"
msgstr "statut de validation" msgstr "statut de validation"
#: apps/tournament/models.py:146 #: apps/tournament/models.py:167
msgid "selected for final" msgid "selected for final"
msgstr "sélectionnée pour la finale" msgstr "sélectionnée pour la finale"
#: apps/tournament/models.py:152 templates/tournament/team_detail.html:18 #: apps/tournament/models.py:173 templates/tournament/team_detail.html:18
msgid "access code" msgid "access code"
msgstr "code d'accès" msgstr "code d'accès"
#: apps/tournament/models.py:197 apps/tournament/models.py:208 #: apps/tournament/models.py:218 apps/tournament/models.py:238
#: templates/tournament/pool_detail.html:15 #: templates/tournament/pool_detail.html:15
msgid "teams" msgid "teams"
msgstr "équipes" msgstr "équipes"
#: apps/tournament/models.py:228 templates/tournament/pool_detail.html:12 #: apps/tournament/models.py:258 templates/tournament/pool_detail.html:12
msgid "juries" msgid "juries"
msgstr "jurys" msgstr "jurys"
#: apps/tournament/models.py:245 #: apps/tournament/models.py:275
msgid "pool" msgid "pool"
msgstr "poule" msgstr "poule"
#: apps/tournament/models.py:246 #: apps/tournament/models.py:276
msgid "pools" msgid "pools"
msgstr "poules" msgstr "poules"
#: apps/tournament/models.py:267 #: apps/tournament/models.py:297
msgid "Not paid" msgid "Not paid"
msgstr "Non payé" msgstr "Non payé"
#: apps/tournament/models.py:268 #: apps/tournament/models.py:298
msgid "Credit card" msgid "Credit card"
msgstr "Carte bancaire" msgstr "Carte bancaire"
#: apps/tournament/models.py:269 #: apps/tournament/models.py:299
msgid "Bank check" msgid "Bank check"
msgstr "Chèque bancaire" msgstr "Chèque bancaire"
#: apps/tournament/models.py:270 #: apps/tournament/models.py:300
msgid "Bank transfer" msgid "Bank transfer"
msgstr "Virement bancaire" msgstr "Virement bancaire"
#: apps/tournament/models.py:271 #: apps/tournament/models.py:301
msgid "Cash" msgid "Cash"
msgstr "Espèces" msgstr "Espèces"
#: apps/tournament/models.py:275 #: apps/tournament/models.py:305
msgid "payment method" msgid "payment method"
msgstr "moyen de paiement" msgstr "moyen de paiement"
#: apps/tournament/models.py:289 #: apps/tournament/models.py:319
msgid "payment" msgid "payment"
msgstr "paiement" msgstr "paiement"
#: apps/tournament/models.py:290 #: apps/tournament/models.py:320
msgid "payments" msgid "payments"
msgstr "paiements" msgstr "paiements"
#: apps/tournament/models.py:293 #: apps/tournament/models.py:323
#, python-brace-format #, python-brace-format
msgid "Payment of {user}" msgid "Payment of {user}"
msgstr "Paiement de {user}" msgstr "Paiement de {user}"
@ -563,77 +563,77 @@ msgstr "dates"
msgid "From {start:%b %d %Y} to {end:%b %d %Y}" msgid "From {start:%b %d %Y} to {end:%b %d %Y}"
msgstr "Du {start: %d %b %Y} au {end:%d %b %Y}" msgstr "Du {start: %d %b %Y} au {end:%d %b %Y}"
#: apps/tournament/tables.py:68 apps/tournament/tables.py:101 #: apps/tournament/tables.py:70 apps/tournament/tables.py:103
#: templates/tournament/team_detail.html:115 #: templates/tournament/team_detail.html:115
#: templates/tournament/team_detail.html:123 #: templates/tournament/team_detail.html:123
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
#: apps/tournament/views.py:52 #: apps/tournament/views.py:49
msgid "Tournaments list" msgid "Tournaments list"
msgstr "Liste des tournois" msgstr "Liste des tournois"
#: apps/tournament/views.py:71 #: apps/tournament/views.py:68
msgid "Add tournament" msgid "Add tournament"
msgstr "Ajouter un tournoi" msgstr "Ajouter un tournoi"
#: apps/tournament/views.py:83 #: apps/tournament/views.py:80
#, python-brace-format #, python-brace-format
msgid "Tournament of {name}" msgid "Tournament of {name}"
msgstr "Tournoi de {name}" msgstr "Tournoi de {name}"
#: apps/tournament/views.py:104 #: apps/tournament/views.py:101
msgid "Update tournament" msgid "Update tournament"
msgstr "Modifier le tournoi" msgstr "Modifier le tournoi"
#: apps/tournament/views.py:136 apps/tournament/views.py:223 #: apps/tournament/views.py:133 apps/tournament/views.py:221
#, python-brace-format #, python-brace-format
msgid "Solutions for team {team}.zip" msgid "Solutions for team {team}.zip"
msgstr "Solutions pour l'équipe {team}.zip" msgstr "Solutions pour l'équipe {team}.zip"
#: apps/tournament/views.py:169 #: apps/tournament/views.py:166
msgid "Information about team" msgid "Information about team"
msgstr "Informations sur l'équipe" msgstr "Informations sur l'équipe"
#: apps/tournament/views.py:177 #: apps/tournament/views.py:174
msgid "Update team" msgid "Update team"
msgstr "Modifier l'équipe" msgstr "Modifier l'équipe"
#: apps/tournament/views.py:189 #: apps/tournament/views.py:186
msgid "Add organizer" msgid "Add organizer"
msgstr "Ajouter un organisateur" msgstr "Ajouter un organisateur"
#: apps/tournament/views.py:207 templates/base.html:108 templates/base.html:126 #: apps/tournament/views.py:205 templates/base.html:108 templates/base.html:126
#: templates/tournament/pool_detail.html:31 #: templates/tournament/pool_detail.html:31
msgid "Solutions" msgid "Solutions"
msgstr "Solutions" msgstr "Solutions"
#: apps/tournament/views.py:241 #: apps/tournament/views.py:239
msgid "" msgid ""
"You can't publish your solution anymore. Deadline: {date:%m-%d-%Y %h:%M}." "You can't publish your solution anymore. Deadline: {date:%m-%d-%Y %h:%M}."
msgstr "" msgstr ""
"Vous ne pouvez plus publier vos solutions. Deadline : {date:%d/%m/%Y %h:%M}." "Vous ne pouvez plus publier vos solutions. Deadline : {date:%d/%m/%Y %h:%M}."
#: apps/tournament/views.py:265 #: apps/tournament/views.py:263
msgid "All solutions" msgid "All solutions"
msgstr "Toutes les solutions" msgstr "Toutes les solutions"
#: apps/tournament/views.py:284 #: apps/tournament/views.py:282
#, python-brace-format #, python-brace-format
msgid "Solutions for tournament {tournament}.zip" msgid "Solutions for tournament {tournament}.zip"
msgstr "Solutions pour le tournoi {tournament}.zip" msgstr "Solutions pour le tournoi {tournament}.zip"
#: apps/tournament/views.py:310 templates/base.html:111 templates/base.html:129 #: apps/tournament/views.py:308 templates/base.html:111 templates/base.html:129
#: templates/tournament/pool_detail.html:53 #: templates/tournament/pool_detail.html:59
msgid "Syntheses" msgid "Syntheses"
msgstr "Synthèses" msgstr "Synthèses"
#: apps/tournament/views.py:326 #: apps/tournament/views.py:324
#, python-brace-format #, python-brace-format
msgid "Syntheses for team {team}.zip" msgid "Syntheses for team {team}.zip"
msgstr "Notes de synthèse de l'équipe {team}.zip" msgstr "Notes de synthèse de l'équipe {team}.zip"
#: apps/tournament/views.py:345 #: apps/tournament/views.py:343
msgid "" msgid ""
"You can't publish your synthesis anymore for the first round. Deadline: " "You can't publish your synthesis anymore for the first round. Deadline: "
"{date:%m-%d-%Y %h:%M}." "{date:%m-%d-%Y %h:%M}."
@ -641,7 +641,7 @@ msgstr ""
"Vous ne pouvez plus envoyer vos notes de synthèse pour le premier tour. " "Vous ne pouvez plus envoyer vos notes de synthèse pour le premier tour. "
"Deadline : {date:%d/%m/%Y %h:%M}." "Deadline : {date:%d/%m/%Y %h:%M}."
#: apps/tournament/views.py:351 #: apps/tournament/views.py:349
msgid "" msgid ""
"You can't publish your synthesis anymore for the second round. Deadline: " "You can't publish your synthesis anymore for the second round. Deadline: "
"{date:%m-%d-%Y %h:%M}." "{date:%m-%d-%Y %h:%M}."
@ -649,32 +649,32 @@ msgstr ""
"Vous ne pouvez plus envoyer vos notes de synthèse pour le second tour. " "Vous ne pouvez plus envoyer vos notes de synthèse pour le second tour. "
"Deadline : {date:%d/%m/%Y %h:%M}." "Deadline : {date:%d/%m/%Y %h:%M}."
#: apps/tournament/views.py:377 #: apps/tournament/views.py:375
msgid "All syntheses" msgid "All syntheses"
msgstr "Toutes les notes de synthèses" msgstr "Toutes les notes de synthèses"
#: apps/tournament/views.py:396 #: apps/tournament/views.py:394
#, python-brace-format #, python-brace-format
msgid "Syntheses for tournament {tournament}.zip" msgid "Syntheses for tournament {tournament}.zip"
msgstr "Notes de synthèse pour le tournoi {tournament}.zip" msgstr "Notes de synthèse pour le tournoi {tournament}.zip"
#: apps/tournament/views.py:421 templates/base.html:133 #: apps/tournament/views.py:419 templates/base.html:133
msgid "Pools" msgid "Pools"
msgstr "Poules" msgstr "Poules"
#: apps/tournament/views.py:436 #: apps/tournament/views.py:435
msgid "Create pool" msgid "Create pool"
msgstr "Créer une poule" msgstr "Créer une poule"
#: apps/tournament/views.py:444 #: apps/tournament/views.py:443
msgid "Pool detail" msgid "Pool detail"
msgstr "Détails d'une poule" msgstr "Détails d'une poule"
#: apps/tournament/views.py:470 #: apps/tournament/views.py:472
msgid "Solutions of a pool.zip" msgid "Solutions of a pool.zip"
msgstr "Solutions d'une poule.zip" msgstr "Solutions d'une poule.zip"
#: apps/tournament/views.py:483 #: apps/tournament/views.py:488
msgid "Syntheses of a pool.zip" msgid "Syntheses of a pool.zip"
msgstr "Notes de synthèse d'une poule.zip" msgstr "Notes de synthèse d'une poule.zip"
@ -972,12 +972,16 @@ msgstr ""
msgid "Reset my password" msgid "Reset my password"
msgstr "Réinitialiser mon mot de passe" msgstr "Réinitialiser mon mot de passe"
#: templates/tournament/pool_detail.html:43 #: templates/tournament/pool_detail.html:36
#: templates/tournament/pool_detail.html:65 msgid "Solutions will be available here for teams from:"
msgstr "Les solutions seront disponibles ici pour les équipes à partir du :"
#: templates/tournament/pool_detail.html:49
#: templates/tournament/pool_detail.html:71
msgid "Download ZIP archive" msgid "Download ZIP archive"
msgstr "Télécharger l'archive ZIP" msgstr "Télécharger l'archive ZIP"
#: templates/tournament/pool_detail.html:74 #: templates/tournament/pool_detail.html:80
msgid "Pool list" msgid "Pool list"
msgstr "Liste des poules" msgstr "Liste des poules"
@ -1084,10 +1088,10 @@ msgstr "Envoyer un mail à toutes les personnes dans une équipe"
msgid "Send a mail to all people that are in a valid team" msgid "Send a mail to all people that are in a valid team"
msgstr "Envoyer un mail à toutes les personnes dans une équipe validée" msgstr "Envoyer un mail à toutes les personnes dans une équipe validée"
#: tfjm/settings.py:157 #: tfjm/settings.py:146
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: tfjm/settings.py:158 #: tfjm/settings.py:147
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"

View File

@ -31,6 +31,12 @@
<h4>{% trans "Solutions" %}</h4> <h4>{% trans "Solutions" %}</h4>
</div> </div>
<div class="card-body"> <div class="card-body">
{% if pool.round == 2 %}
<div class="alert alert-warning">
{% trans "Solutions will be available here for teams from:" %} {{ pool.tournament.date_solutions_2 }}
</div>
{% endif %}
<ul> <ul>
{% for solution in pool.solutions.all %} {% for solution in pool.solutions.all %}
<li><a data-turbolinks="false" href="{{ solution.file.url }}">{{ solution }}</a></li> <li><a data-turbolinks="false" href="{{ solution.file.url }}">{{ solution }}</a></li>