diff --git a/apps/member/models.py b/apps/member/models.py index b05d6a2..82da7dd 100644 --- a/apps/member/models.py +++ b/apps/member/models.py @@ -287,8 +287,12 @@ class Solution(Document): unique_together = ('team', 'problem', 'final',) def __str__(self): - return _("Solution of team {trigram} for problem {problem}")\ - .format(trigram=self.team.trigram, problem=self.problem) + if self.final: + return _("Solution of team {trigram} for problem {problem} for final")\ + .format(trigram=self.team.trigram, problem=self.problem) + else: + return _("Solution of team {trigram} for problem {problem}")\ + .format(trigram=self.team.trigram, problem=self.problem) class Synthesis(Document): diff --git a/apps/member/views.py b/apps/member/views.py index 6b2fbe4..651462a 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -71,7 +71,7 @@ class UserDetailView(LoginRequiredMixin, DetailView): """ An administrator can log in through this page as someone else, and act as this other person. """ - if "view_as" in request.POST and self.request.admin: + if "view_as" in request.POST and self.request.user.admin: session = request.session session["admin"] = request.user.pk obj = self.get_object() diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 4bdbdf1..fd9a628 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: TFJM2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-05-08 19:44+0200\n" +"POT-Creation-Date: 2020-05-11 14:17+0200\n" "PO-Revision-Date: 2020-04-29 02:30+0000\n" "Last-Translator: Yohann D'ANELLO \n" "Language-Team: fr \n" @@ -18,253 +18,266 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: apps/api/apps.py:7 +#: apps/api/apps.py:10 msgid "API" msgstr "API" -#: apps/member/apps.py:7 +#: apps/member/apps.py:10 msgid "member" msgstr "membre" -#: apps/member/forms.py:14 +#: apps/member/forms.py:18 msgid "Choose a role..." msgstr "Choisir un rôle ..." -#: apps/member/forms.py:15 apps/member/models.py:133 +#: apps/member/forms.py:19 apps/member/models.py:138 msgid "Participant" msgstr "Participant" -#: apps/member/models.py:18 templates/member/tfjmuser_detail.html:35 +#: apps/member/forms.py:20 apps/member/models.py:137 +msgid "Coach" +msgstr "Encadrant" + +#: apps/member/models.py:21 templates/member/tfjmuser_detail.html:35 msgid "email" msgstr "Adresse électronique" -#: apps/member/models.py:26 apps/member/models.py:218 apps/member/models.py:234 -#: apps/member/models.py:265 apps/tournament/models.py:221 -#: apps/tournament/models.py:295 templates/member/tfjmuser_detail.html:16 +#: apps/member/models.py:22 +msgid "This should be valid and will be controlled." +msgstr "" + +#: apps/member/models.py:30 apps/member/models.py:244 apps/member/models.py:263 +#: apps/member/models.py:306 apps/tournament/models.py:285 +#: apps/tournament/models.py:385 templates/member/tfjmuser_detail.html:16 msgid "team" msgstr "équipe" -#: apps/member/models.py:32 templates/member/tfjmuser_detail.html:21 +#: apps/member/models.py:31 +msgid "Concerns only coaches and participants." +msgstr "Concerne uniquement les encadrants et participants." + +#: apps/member/models.py:37 templates/member/tfjmuser_detail.html:21 msgid "birth date" msgstr "date de naissance" -#: apps/member/models.py:40 +#: apps/member/models.py:45 msgid "Male" msgstr "Homme" -#: apps/member/models.py:41 +#: apps/member/models.py:46 msgid "Female" msgstr "Femme" -#: apps/member/models.py:42 +#: apps/member/models.py:47 msgid "Non binary" msgstr "Non binaire" -#: apps/member/models.py:44 templates/member/tfjmuser_detail.html:26 +#: apps/member/models.py:49 templates/member/tfjmuser_detail.html:26 msgid "gender" msgstr "genre" -#: apps/member/models.py:51 templates/member/tfjmuser_detail.html:31 +#: apps/member/models.py:56 templates/member/tfjmuser_detail.html:31 msgid "address" msgstr "adresse" -#: apps/member/models.py:57 +#: apps/member/models.py:62 msgid "postal code" msgstr "code postal" -#: apps/member/models.py:64 +#: apps/member/models.py:69 msgid "city" msgstr "ville" -#: apps/member/models.py:71 +#: apps/member/models.py:76 msgid "country" msgstr "pays" -#: apps/member/models.py:79 templates/member/tfjmuser_detail.html:39 +#: apps/member/models.py:84 templates/member/tfjmuser_detail.html:39 msgid "phone number" msgstr "numéro de téléphone" -#: apps/member/models.py:86 templates/member/tfjmuser_detail.html:44 +#: apps/member/models.py:91 templates/member/tfjmuser_detail.html:44 msgid "school" msgstr "école" -#: apps/member/models.py:92 +#: apps/member/models.py:97 msgid "Seconde or less" msgstr "Seconde ou inférieur" -#: apps/member/models.py:93 +#: apps/member/models.py:98 msgid "Première" msgstr "Première" -#: apps/member/models.py:94 +#: apps/member/models.py:99 msgid "Terminale" msgstr "Terminale" -#: apps/member/models.py:105 templates/member/tfjmuser_detail.html:51 +#: apps/member/models.py:110 templates/member/tfjmuser_detail.html:51 msgid "responsible name" msgstr "nom du responsable" -#: apps/member/models.py:112 templates/member/tfjmuser_detail.html:56 +#: apps/member/models.py:117 templates/member/tfjmuser_detail.html:56 msgid "responsible phone" msgstr "téléphone du responsable" -#: apps/member/models.py:118 templates/member/tfjmuser_detail.html:61 +#: apps/member/models.py:123 templates/member/tfjmuser_detail.html:61 msgid "responsible email" msgstr "email du responsable" -#: apps/member/models.py:124 apps/tournament/models.py:37 +#: apps/member/models.py:129 apps/tournament/models.py:44 #: templates/member/tfjmuser_detail.html:67 #: templates/tournament/tournament_detail.html:42 msgid "description" msgstr "description" -#: apps/member/models.py:130 +#: apps/member/models.py:135 msgid "Admin" msgstr "Administrateur" -#: apps/member/models.py:131 +#: apps/member/models.py:136 msgid "Organizer" msgstr "Organisateur" -#: apps/member/models.py:132 -msgid "Coach" -msgstr "Encadrant" - -#: apps/member/models.py:139 apps/tournament/models.py:81 -#: apps/tournament/models.py:178 +#: apps/member/models.py:144 apps/tournament/models.py:89 +#: apps/tournament/models.py:214 msgid "year" msgstr "année" -#: apps/member/models.py:155 apps/member/models.py:191 -#: apps/tournament/models.py:288 +#: apps/member/models.py:171 apps/member/models.py:214 +#: apps/tournament/models.py:378 msgid "user" msgstr "utilisateur" -#: apps/member/models.py:156 +#: apps/member/models.py:172 msgid "users" msgstr "utilisateurs" -#: apps/member/models.py:169 +#: apps/member/models.py:189 msgid "file" msgstr "fichier" -#: apps/member/models.py:174 +#: apps/member/models.py:194 msgid "uploaded at" msgstr "téléversé le" -#: apps/member/models.py:178 +#: apps/member/models.py:198 msgid "document" msgstr "document" -#: apps/member/models.py:179 +#: apps/member/models.py:199 msgid "documents" msgstr "documents" -#: apps/member/models.py:197 +#: apps/member/models.py:220 msgid "Parental consent" msgstr "Autorisation parentale" -#: apps/member/models.py:198 +#: apps/member/models.py:221 msgid "Photo consent" msgstr "Autorisation de droit à l'image" -#: apps/member/models.py:199 +#: apps/member/models.py:222 msgid "Sanitary plug" msgstr "Fiche sanitaire" -#: apps/member/models.py:200 apps/tournament/models.py:306 +#: apps/member/models.py:223 apps/tournament/models.py:396 msgid "Scholarship" msgstr "Bourse" -#: apps/member/models.py:202 +#: apps/member/models.py:225 msgid "type" msgstr "type" -#: apps/member/models.py:206 +#: apps/member/models.py:229 msgid "authorization" msgstr "autorisation" -#: apps/member/models.py:207 +#: apps/member/models.py:230 msgid "authorizations" msgstr "autorisations" -#: apps/member/models.py:210 +#: apps/member/models.py:233 #, python-brace-format msgid "{authorization} for user {user}" msgstr "{authorization} pour l'utilisateur {user}" -#: apps/member/models.py:222 +#: apps/member/models.py:248 msgid "motivation letter" msgstr "lettre de motivation" -#: apps/member/models.py:223 +#: apps/member/models.py:249 msgid "motivation letters" msgstr "lettres de motivation" -#: apps/member/models.py:226 +#: apps/member/models.py:252 #, python-brace-format msgid "Motivation letter of team {team} ({trigram})" msgstr "Lettre de motivation de l'équipe {team} ({trigram})" -#: apps/member/models.py:238 +#: apps/member/models.py:267 msgid "problem" msgstr "problème" -#: apps/member/models.py:243 +#: apps/member/models.py:272 msgid "final solution" msgstr "solution pour la finale" -#: apps/member/models.py:251 +#: apps/member/models.py:285 msgid "solution" msgstr "solution" -#: apps/member/models.py:252 apps/tournament/models.py:248 +#: apps/member/models.py:286 apps/tournament/models.py:324 msgid "solutions" msgstr "solutions" -#: apps/member/models.py:256 +#: apps/member/models.py:291 +#, python-brace-format +msgid "Solution of team {trigram} for problem {problem} for final" +msgstr "Solution de l'équipe {trigram} pour le problème {problem} pour la finale" + +#: apps/member/models.py:294 #, python-brace-format msgid "Solution of team {trigram} for problem {problem}" msgstr "Solution de l'équipe {trigram} pour le problème {problem}" -#: apps/member/models.py:271 +#: apps/member/models.py:312 msgid "Opponent" msgstr "Opposant" -#: apps/member/models.py:272 +#: apps/member/models.py:313 msgid "Rapporteur" msgstr "Rapporteur" -#: apps/member/models.py:274 +#: apps/member/models.py:315 msgid "source" msgstr "source" -#: apps/member/models.py:279 apps/tournament/models.py:253 +#: apps/member/models.py:320 apps/tournament/models.py:329 msgid "Round 1" msgstr "Tour 1" -#: apps/member/models.py:280 apps/tournament/models.py:254 +#: apps/member/models.py:321 apps/tournament/models.py:330 msgid "Round 2" msgstr "Tour 2" -#: apps/member/models.py:282 apps/tournament/models.py:256 +#: apps/member/models.py:323 apps/tournament/models.py:332 #: templates/tournament/pool_detail.html:18 msgid "round" msgstr "tour" -#: apps/member/models.py:287 +#: apps/member/models.py:328 msgid "final synthesis" msgstr "synthèse pour la finale" -#: apps/member/models.py:295 +#: apps/member/models.py:341 msgid "synthesis" msgstr "synthèse" -#: apps/member/models.py:296 +#: apps/member/models.py:342 msgid "syntheses" msgstr "synthèses" -#: apps/member/models.py:300 +#: apps/member/models.py:346 #, python-brace-format msgid "" "Synthesis of team {trigram} that is {source} for the round {round} of " @@ -273,370 +286,406 @@ msgstr "" "Synthèse de l'équipe {trigram} qui est {source} pour le tour {round} du " "tournoi {tournament}" -#: apps/member/models.py:309 +#: apps/member/models.py:358 msgid "key" msgstr "clé" -#: apps/member/models.py:314 +#: apps/member/models.py:363 msgid "value" msgstr "valeur" -#: apps/member/models.py:318 +#: apps/member/models.py:367 msgid "configuration" msgstr "configuration" -#: apps/member/models.py:319 +#: apps/member/models.py:368 msgid "configurations" msgstr "configurations" -#: apps/member/views.py:82 apps/member/views.py:118 +#: apps/member/views.py:100 apps/member/views.py:140 msgid "You can't organize and participate at the same time." msgstr "Vous ne pouvez pas organiser et participer en même temps." -#: apps/member/views.py:86 apps/member/views.py:122 +#: apps/member/views.py:104 apps/member/views.py:144 msgid "You are already in a team." msgstr "Vous êtes déjà dans une équipe." -#: apps/member/views.py:126 +#: apps/member/views.py:148 msgid "This team is full of coachs." msgstr "Cette équipe est pleine en encadrants." -#: apps/member/views.py:130 +#: apps/member/views.py:152 msgid "This team is full of participants." msgstr "Cette équipe est pleine en participants." -#: apps/member/views.py:179 templates/base.html:81 +#: apps/member/views.py:156 +msgid "This team is already validated or waiting for validation." +msgstr "L'équipe est déjà en attente de validation." + +#: apps/member/views.py:220 templates/base.html:81 msgid "All profiles" msgstr "Tous les profils" -#: apps/member/views.py:188 templates/base.html:80 +#: apps/member/views.py:232 templates/base.html:80 msgid "Orphaned profiles" msgstr "Profils orphelins" -#: apps/member/views.py:197 apps/tournament/forms.py:17 templates/base.html:83 +#: apps/member/views.py:244 apps/tournament/forms.py:22 templates/base.html:83 msgid "Organizers" msgstr "Organisateurs" -#: apps/tournament/apps.py:7 apps/tournament/models.py:110 -#: apps/tournament/models.py:147 apps/tournament/tables.py:94 +#: apps/tournament/apps.py:10 apps/tournament/models.py:134 +#: apps/tournament/models.py:182 apps/tournament/tables.py:110 #: templates/tournament/pool_detail.html:21 #: templates/tournament/team_detail.html:21 msgid "tournament" msgstr "tournoi" -#: apps/tournament/forms.py:25 +#: apps/tournament/forms.py:30 msgid "This tournament already exists." msgstr "Ce tournoi existe déjà." -#: apps/tournament/forms.py:27 +#: apps/tournament/forms.py:32 msgid "The final tournament was already defined." msgstr "Le tournoi de la finale est déjà défini." -#: apps/tournament/forms.py:55 +#: apps/tournament/forms.py:64 msgid "This organizer already exist." msgstr "Cet organisateur existe déjà." -#: apps/tournament/forms.py:81 +#: apps/tournament/forms.py:93 msgid "The trigram must be composed of three upcase letters." msgstr "Le trigramme doit être composé de trois lettres en majuscules." -#: apps/tournament/forms.py:85 +#: apps/tournament/forms.py:97 msgid "This trigram is already used." msgstr "Ce trigramme est déjà utilisé." -#: apps/tournament/forms.py:88 +#: apps/tournament/forms.py:100 msgid "This name is already used." msgstr "Ce nom est déjà utilisé." -#: apps/tournament/forms.py:91 +#: apps/tournament/forms.py:103 msgid "This tournament is already closed." msgstr "Ce tournoi est déjà fermé." -#: apps/tournament/forms.py:98 +#: apps/tournament/forms.py:114 msgid "Access code" msgstr "Code d'accès" -#: apps/tournament/forms.py:106 +#: apps/tournament/forms.py:122 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." -#: apps/tournament/forms.py:110 +#: apps/tournament/forms.py:126 msgid "This access code is invalid." msgstr "Ce code d'accès est invalide." -#: apps/tournament/forms.py:113 +#: apps/tournament/forms.py:129 msgid "The team is already validated." msgstr "L'équipe est déjà validée." -#: apps/tournament/forms.py:121 +#: apps/tournament/forms.py:141 msgid "Problem" msgstr "Problème" -#: apps/tournament/forms.py:122 +#: apps/tournament/forms.py:142 #, python-brace-format msgid "Problem #{problem:d}" msgstr "Problème n°{problem:d}" -#: apps/tournament/forms.py:139 apps/tournament/forms.py:152 -#: apps/tournament/forms.py:165 +#: apps/tournament/forms.py:168 apps/tournament/forms.py:181 +#: apps/tournament/forms.py:194 msgid "Choose a team..." msgstr "Choisir une équipe ..." -#: apps/tournament/forms.py:140 +#: apps/tournament/forms.py:169 msgid "Team 1" msgstr "Équipe 1" -#: apps/tournament/forms.py:147 +#: apps/tournament/forms.py:176 msgid "Problem defended by team 1" msgstr "Problème défendu par l'équipe 1" -#: apps/tournament/forms.py:153 +#: apps/tournament/forms.py:182 msgid "Team 2" msgstr "Équipe 2" -#: apps/tournament/forms.py:160 +#: apps/tournament/forms.py:189 msgid "Problem defended by team 2" msgstr "Problème défendu par l'équipe 2" -#: apps/tournament/forms.py:166 +#: apps/tournament/forms.py:195 msgid "Team 3" msgstr "Équipe 3" -#: apps/tournament/forms.py:173 +#: apps/tournament/forms.py:202 msgid "Problem defended by team 3" msgstr "Problème défendu par l'équipe 3" -#: apps/tournament/models.py:14 apps/tournament/models.py:135 +#: apps/tournament/models.py:18 apps/tournament/models.py:169 #: templates/tournament/team_detail.html:12 msgid "name" msgstr "nom" -#: apps/tournament/models.py:20 templates/tournament/tournament_detail.html:12 +#: apps/tournament/models.py:24 templates/tournament/tournament_detail.html:12 msgid "organizers" msgstr "organisateurs" -#: apps/tournament/models.py:24 templates/tournament/tournament_detail.html:15 +#: apps/tournament/models.py:25 +msgid "" +"List of all organizers that can see and manipulate data of the tournament " +"and the teams." +msgstr "" +"Liste des organisateurs qui peuvent manipuler les données du tournoi et " +"des équipes." + +#: apps/tournament/models.py:29 templates/tournament/tournament_detail.html:15 msgid "size" msgstr "taille" -#: apps/tournament/models.py:29 templates/tournament/tournament_detail.html:18 +#: apps/tournament/models.py:30 +msgid "Number of teams that are allowed to join the tournament." +msgstr "Nombre d'équipes qui sont autorisées à rejoindre le tournoi." + +#: apps/tournament/models.py:35 templates/tournament/tournament_detail.html:18 msgid "place" msgstr "lieu" -#: apps/tournament/models.py:33 templates/tournament/tournament_detail.html:21 +#: apps/tournament/models.py:39 templates/tournament/tournament_detail.html:21 msgid "price" msgstr "prix" -#: apps/tournament/models.py:42 +#: apps/tournament/models.py:40 +msgid "Price asked to participants. Free with a scholarship." +msgstr "Prix demandé par participant. Gratuit pour les boursiers." + +#: apps/tournament/models.py:49 msgid "date start" msgstr "date de début" -#: apps/tournament/models.py:47 +#: apps/tournament/models.py:54 msgid "date end" msgstr "date de fin" -#: apps/tournament/models.py:52 templates/tournament/tournament_detail.html:27 +#: apps/tournament/models.py:59 templates/tournament/tournament_detail.html:27 msgid "date of registration closing" msgstr "date de clôture des inscriptions" -#: apps/tournament/models.py:57 templates/tournament/tournament_detail.html:30 +#: apps/tournament/models.py:64 templates/tournament/tournament_detail.html:30 msgid "date of maximal solution submission" msgstr "date d'envoi maximal des solutions" -#: apps/tournament/models.py:62 templates/tournament/tournament_detail.html:33 +#: apps/tournament/models.py:69 templates/tournament/tournament_detail.html:33 msgid "date of maximal syntheses submission for the first round" msgstr "date d'envoi maximal des notes de synthèses du premier tour" -#: apps/tournament/models.py:67 templates/tournament/tournament_detail.html:36 +#: apps/tournament/models.py:74 templates/tournament/tournament_detail.html:36 msgid "date when solutions of round 2 are available" msgstr "date à partir de laquelle les solutions du tour 2 sont disponibles" -#: apps/tournament/models.py:72 templates/tournament/tournament_detail.html:39 +#: apps/tournament/models.py:79 templates/tournament/tournament_detail.html:39 msgid "date of maximal syntheses submission for the second round" msgstr "date d'envoi maximal des notes de synthèses pour le second tour" -#: apps/tournament/models.py:76 +#: apps/tournament/models.py:83 msgid "final tournament" msgstr "finale" -#: apps/tournament/models.py:111 +#: apps/tournament/models.py:84 +msgid "It should be only one final tournament." +msgstr "Il ne doit y avoir qu'une seule finale." + +#: apps/tournament/models.py:135 msgid "tournaments" msgstr "tournois" -#: apps/tournament/models.py:140 templates/tournament/team_detail.html:15 +#: apps/tournament/models.py:174 templates/tournament/team_detail.html:15 msgid "trigram" msgstr "trigramme" -#: apps/tournament/models.py:152 +#: apps/tournament/models.py:175 +msgid "" +"The trigram should be composed of 3 capitalize letters, that is a funny " +"acronym for the team." +msgstr "" +"Le trigramme doit être composé de trois lettres en majuscule, qui doit " +"être un acronyme amusant représentant l'équipe." + +#: apps/tournament/models.py:183 +msgid "The tournament where the team is registered." +msgstr "Le tournoi où l'équipe est inscrite." + +#: apps/tournament/models.py:188 msgid "inscription date" msgstr "date d'inscription" -#: apps/tournament/models.py:158 apps/tournament/models.py:315 +#: apps/tournament/models.py:194 apps/tournament/models.py:405 msgid "Registration not validated" msgstr "Inscription non validée" -#: apps/tournament/models.py:159 apps/tournament/models.py:316 +#: apps/tournament/models.py:195 apps/tournament/models.py:406 msgid "Waiting for validation" msgstr "En attente de validation" -#: apps/tournament/models.py:160 apps/tournament/models.py:317 +#: apps/tournament/models.py:196 apps/tournament/models.py:407 msgid "Registration validated" msgstr "Inscription validée" -#: apps/tournament/models.py:162 apps/tournament/models.py:319 +#: apps/tournament/models.py:198 apps/tournament/models.py:409 #: templates/tournament/team_detail.html:32 msgid "validation status" msgstr "statut de validation" -#: apps/tournament/models.py:167 +#: apps/tournament/models.py:203 msgid "selected for final" msgstr "sélectionnée pour la finale" -#: apps/tournament/models.py:173 templates/tournament/team_detail.html:18 +#: apps/tournament/models.py:209 templates/tournament/team_detail.html:18 msgid "access code" msgstr "code d'accès" -#: apps/tournament/models.py:222 apps/tournament/models.py:242 +#: apps/tournament/models.py:286 apps/tournament/models.py:318 #: templates/tournament/pool_detail.html:15 msgid "teams" msgstr "équipes" -#: apps/tournament/models.py:262 templates/tournament/pool_detail.html:12 +#: apps/tournament/models.py:338 templates/tournament/pool_detail.html:12 msgid "juries" msgstr "jurys" -#: apps/tournament/models.py:279 +#: apps/tournament/models.py:365 msgid "pool" msgstr "poule" -#: apps/tournament/models.py:280 +#: apps/tournament/models.py:366 msgid "pools" msgstr "poules" -#: apps/tournament/models.py:301 +#: apps/tournament/models.py:391 msgid "Not paid" msgstr "Non payé" -#: apps/tournament/models.py:302 +#: apps/tournament/models.py:392 msgid "Credit card" msgstr "Carte bancaire" -#: apps/tournament/models.py:303 +#: apps/tournament/models.py:393 msgid "Bank check" msgstr "Chèque bancaire" -#: apps/tournament/models.py:304 +#: apps/tournament/models.py:394 msgid "Bank transfer" msgstr "Virement bancaire" -#: apps/tournament/models.py:305 +#: apps/tournament/models.py:395 msgid "Cash" msgstr "Espèces" -#: apps/tournament/models.py:309 +#: apps/tournament/models.py:399 msgid "payment method" msgstr "moyen de paiement" -#: apps/tournament/models.py:323 +#: apps/tournament/models.py:413 msgid "payment" msgstr "paiement" -#: apps/tournament/models.py:324 +#: apps/tournament/models.py:414 msgid "payments" msgstr "paiements" -#: apps/tournament/models.py:327 +#: apps/tournament/models.py:417 #, python-brace-format msgid "Payment of {user}" msgstr "Paiement de {user}" -#: apps/tournament/tables.py:18 templates/tournament/tournament_detail.html:24 +#: apps/tournament/tables.py:22 templates/tournament/tournament_detail.html:24 msgid "dates" msgstr "dates" -#: apps/tournament/tables.py:22 +#: apps/tournament/tables.py:26 msgid "From {start:%b %d %Y} to {end:%b %d %Y}" msgstr "Du {start: %d %b %Y} au {end:%d %b %Y}" -#: apps/tournament/tables.py:59 apps/tournament/tables.py:127 +#: apps/tournament/tables.py:71 apps/tournament/tables.py:147 msgid "Tournament" msgstr "Tournoi" -#: apps/tournament/tables.py:73 apps/tournament/tables.py:108 +#: apps/tournament/tables.py:85 apps/tournament/tables.py:124 #: templates/tournament/team_detail.html:135 #: templates/tournament/team_detail.html:144 msgid "Download" msgstr "Télécharger" -#: apps/tournament/tables.py:120 +#: apps/tournament/tables.py:140 msgid "Problems" msgstr "Problèmes" -#: apps/tournament/views.py:50 +#: apps/tournament/views.py:66 msgid "Tournaments list" msgstr "Liste des tournois" -#: apps/tournament/views.py:69 +#: apps/tournament/views.py:89 msgid "Add tournament" msgstr "Ajouter un tournoi" -#: apps/tournament/views.py:81 +#: apps/tournament/views.py:106 #, python-brace-format msgid "Tournament of {name}" msgstr "Tournoi de {name}" -#: apps/tournament/views.py:102 +#: apps/tournament/views.py:140 msgid "Update tournament" msgstr "Modifier le tournoi" -#: apps/tournament/views.py:134 apps/tournament/views.py:246 +#: apps/tournament/views.py:187 apps/tournament/views.py:315 #, python-brace-format msgid "Solutions for team {team}.zip" msgstr "Solutions pour l'équipe {team}.zip" -#: apps/tournament/views.py:189 +#: apps/tournament/views.py:243 msgid "Information about team" msgstr "Informations sur l'équipe" -#: apps/tournament/views.py:199 +#: apps/tournament/views.py:258 msgid "Update team" msgstr "Modifier l'équipe" -#: apps/tournament/views.py:211 +#: apps/tournament/views.py:276 msgid "Add organizer" msgstr "Ajouter un organisateur" -#: apps/tournament/views.py:230 templates/base.html:108 templates/base.html:126 +#: apps/tournament/views.py:299 templates/base.html:108 templates/base.html:126 #: templates/tournament/pool_detail.html:31 msgid "Solutions" msgstr "Solutions" -#: apps/tournament/views.py:270 +#: apps/tournament/views.py:339 msgid "" "You can't publish your solution anymore. Deadline: {date:%m-%d-%Y %H:%M}." msgstr "" "Vous ne pouvez plus publier vos solutions. Deadline : {date:%d/%m/%Y %H:%M}." -#: apps/tournament/views.py:294 +#: apps/tournament/views.py:368 msgid "All solutions" msgstr "Toutes les solutions" -#: apps/tournament/views.py:313 +#: apps/tournament/views.py:387 #, python-brace-format msgid "Solutions for tournament {tournament}.zip" msgstr "Solutions pour le tournoi {tournament}.zip" -#: apps/tournament/views.py:340 templates/base.html:111 templates/base.html:129 +#: apps/tournament/views.py:417 templates/base.html:111 templates/base.html:129 #: templates/tournament/pool_detail.html:57 msgid "Syntheses" msgstr "Synthèses" -#: apps/tournament/views.py:356 +#: apps/tournament/views.py:433 #, python-brace-format msgid "Syntheses for team {team}.zip" msgstr "Notes de synthèse de l'équipe {team}.zip" -#: apps/tournament/views.py:381 +#: apps/tournament/views.py:458 msgid "" "You can't publish your synthesis anymore for the first round. Deadline: " "{date:%m-%d-%Y %H:%M}." @@ -644,7 +693,7 @@ msgstr "" "Vous ne pouvez plus envoyer vos notes de synthèse pour le premier tour. " "Deadline : {date:%d/%m/%Y %h:%M}." -#: apps/tournament/views.py:387 +#: apps/tournament/views.py:464 msgid "" "You can't publish your synthesis anymore for the second round. Deadline: " "{date:%m-%d-%Y %H:%M}." @@ -652,34 +701,34 @@ msgstr "" "Vous ne pouvez plus envoyer vos notes de synthèse pour le second tour. " "Deadline : {date:%d/%m/%Y %h:%M}." -#: apps/tournament/views.py:413 +#: apps/tournament/views.py:494 msgid "All syntheses" msgstr "Toutes les notes de synthèses" -#: apps/tournament/views.py:432 +#: apps/tournament/views.py:513 #, python-brace-format msgid "Syntheses for tournament {tournament}.zip" msgstr "Notes de synthèse pour le tournoi {tournament}.zip" -#: apps/tournament/views.py:457 templates/base.html:133 +#: apps/tournament/views.py:542 templates/base.html:133 msgid "Pools" msgstr "Poules" -#: apps/tournament/views.py:474 +#: apps/tournament/views.py:563 msgid "Create pool" msgstr "Créer une poule" -#: apps/tournament/views.py:482 +#: apps/tournament/views.py:580 msgid "Pool detail" msgstr "Détails d'une poule" -#: apps/tournament/views.py:511 +#: apps/tournament/views.py:609 #, python-brace-format msgid "" "Solutions of a pool for the round {round} of the tournament {tournament}.zip" msgstr "Solutions d'une poule du tour {round} du tournoi {tournament}.zip" -#: apps/tournament/views.py:528 +#: apps/tournament/views.py:626 #, python-brace-format msgid "" "Syntheses of a pool for the round {round} of the tournament {tournament}.zip" diff --git a/templates/member/tfjmuser_detail.html b/templates/member/tfjmuser_detail.html index e20e737..26e63b4 100644 --- a/templates/member/tfjmuser_detail.html +++ b/templates/member/tfjmuser_detail.html @@ -5,7 +5,7 @@ {% block content %}
-

{{ user }}

+

{{ tfjmuser }}