Only participants in a valid team can see the draw

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello 2023-04-10 10:02:37 +02:00
parent a240d7cad5
commit 3d7a39a593
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
4 changed files with 196 additions and 175 deletions

View File

@ -1,6 +1,7 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block content %}
{# The navbar to select the tournament #}
@ -25,6 +26,10 @@
aria-labelledby="tab-{{ tournament.id }}" tabindex="0">
{% include "draw/tournament_content.html" with tournament=tournament %}
</div>
{% else %}
<div class="alert alert-warning">
{% trans "You don't participate to any tournament." %}
</div>
{% endfor %}
</div>
{% endblock %}

View File

@ -3,6 +3,8 @@
from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.exceptions import PermissionDenied
from django.utils.translation import gettext_lazy as _
from django.views.generic import TemplateView
from participation.models import Tournament
@ -25,8 +27,11 @@ class DisplayView(LoginRequiredMixin, TemplateView):
# A volunteer can see their tournaments
tournaments = reg.interesting_tournaments
else:
if not reg.team:
raise PermissionDenied(_("You are not in a team."))
# A participant can see its own tournament, or the final if necessary
tournaments = [reg.team.participation.tournament]
tournaments = [reg.team.participation.tournament] if reg.team.participation.valid else []
if reg.team.participation.final:
tournaments.append(Tournament.final_tournament())

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-07 12:02+0200\n"
"POT-Creation-Date: 2023-04-10 10:00+0200\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"
@ -33,12 +33,12 @@ msgstr "équipes"
msgid "tournament"
msgstr "tournoi"
#: draw/admin.py:60 draw/models.py:228 draw/models.py:420
#: draw/admin.py:60 draw/models.py:231 draw/models.py:426
#: participation/models.py:355
msgid "round"
msgstr "tour"
#: draw/apps.py:10 tfjm/templates/base.html:97
#: draw/apps.py:10 tfjm/templates/base.html:98
msgid "Draw"
msgstr "Tirage au sort"
@ -46,64 +46,64 @@ msgstr "Tirage au sort"
msgid "You are not an organizer."
msgstr "Vous n'êtes pas un⋅e organisateur⋅rice."
#: draw/consumers.py:151
#: draw/consumers.py:144
msgid "The draw is already started."
msgstr "Le tirage a déjà commencé."
#: draw/consumers.py:157
#: draw/consumers.py:150
msgid "Invalid format"
msgstr "Format invalide"
#: draw/consumers.py:162
#: draw/consumers.py:155
#, python-brace-format
msgid "The sum must be equal to the number of teams: expected {len}, got {sum}"
msgstr ""
"La somme doit être égale au nombre d'équipes : attendu {len}, obtenu {sum}"
#: draw/consumers.py:167
#: draw/consumers.py:160
msgid "There can be at most one pool with 5 teams."
msgstr "Il ne peut y avoir au plus qu'une seule poule de 5 équipes."
#: draw/consumers.py:195
#: draw/consumers.py:188
msgid "Draw started!"
msgstr "Le tirage a commencé !"
#: draw/consumers.py:215
#: draw/consumers.py:208
#, python-brace-format
msgid "The draw for the tournament {tournament} will start."
msgstr "Le tirage au sort du tournoi {tournament} va commencer."
#: draw/consumers.py:226 draw/consumers.py:251 draw/consumers.py:585
#: draw/consumers.py:774 draw/consumers.py:856 draw/consumers.py:873
#: draw/consumers.py:943 draw/templates/draw/tournament_content.html:5
#: draw/consumers.py:219 draw/consumers.py:244 draw/consumers.py:578
#: draw/consumers.py:767 draw/consumers.py:849 draw/consumers.py:866
#: draw/consumers.py:936 draw/templates/draw/tournament_content.html:5
msgid "The draw has not started yet."
msgstr "Le tirage au sort n'a pas encore commencé."
#: draw/consumers.py:238
#: draw/consumers.py:231
#, python-brace-format
msgid "The draw for the tournament {tournament} is aborted."
msgstr "Le tirage au sort du tournoi {tournament} est annulé."
#: draw/consumers.py:278 draw/consumers.py:299 draw/consumers.py:531
#: draw/consumers.py:590 draw/consumers.py:779
#: draw/consumers.py:271 draw/consumers.py:292 draw/consumers.py:524
#: draw/consumers.py:583 draw/consumers.py:772
msgid "This is not the time for this."
msgstr "Ce n'est pas le moment pour cela."
#: draw/consumers.py:291 draw/consumers.py:294
#: draw/consumers.py:284 draw/consumers.py:287
msgid "You've already launched the dice."
msgstr "Vous avez déjà lancé le dé."
#: draw/consumers.py:297
#: draw/consumers.py:290
msgid "It is not your turn."
msgstr "Ce n'est pas votre tour."
#: draw/consumers.py:378
#: draw/consumers.py:371
#, python-brace-format
msgid "Dices from teams {teams} are identical. Please relaunch your dices."
msgstr ""
"Les dés des équipes {teams} sont identiques. Merci de relancer vos dés."
#: draw/consumers.py:876
#: draw/consumers.py:869
msgid "This is only available for the final tournament."
msgstr "Cela n'est possible que pour la finale."
@ -164,118 +164,122 @@ msgstr "poule actuelle"
msgid "The current pool where teams select their problems."
msgstr "La poule en cours, où les équipes choisissent leurs problèmes"
#: draw/models.py:229
#: draw/models.py:232
msgid "rounds"
msgstr "tours"
#: draw/models.py:251 participation/models.py:369
#: draw/models.py:254 participation/models.py:369
msgid "letter"
msgstr "lettre"
#: draw/models.py:252
#: draw/models.py:255
msgid "The letter of the pool: A, B, C or D."
msgstr "La lettre de la poule : A, B, C ou D."
#: draw/models.py:256
#: draw/models.py:259
#: participation/templates/participation/tournament_detail.html:15
msgid "size"
msgstr "taille"
#: draw/models.py:258
#: draw/models.py:261
msgid "The number of teams in this pool, between 3 and 5."
msgstr "Le nombre d'équipes dans la poule, entre 3 et 5."
#: draw/models.py:267
#: draw/models.py:270
msgid "current team"
msgstr "équipe actuelle"
#: draw/models.py:268
#: draw/models.py:271
msgid "The current team that is selecting its problem."
msgstr "L'équipe qui est en train de choisir son problème."
#: draw/models.py:277
#: draw/models.py:280
msgid "associated pool"
msgstr "poule associée"
#: draw/models.py:278
#: draw/models.py:281
msgid "The full pool instance."
msgstr "L'instance complète de la poule."
#: draw/models.py:398
#: draw/models.py:404
#, python-brace-format
msgid "Pool {letter}{number}"
msgstr "Poule {letter}{number}"
#: draw/models.py:401 draw/models.py:428 participation/admin.py:69
#: draw/models.py:407 draw/models.py:434 participation/admin.py:69
#: participation/admin.py:88 participation/models.py:421
#: participation/models.py:430 participation/tables.py:82
msgid "pool"
msgstr "poule"
#: draw/models.py:402 participation/models.py:422
#: draw/models.py:408 participation/models.py:422
msgid "pools"
msgstr "poules"
#: draw/models.py:414 participation/models.py:342 participation/models.py:580
#: participation/models.py:610 participation/models.py:648
#: draw/models.py:420 participation/models.py:342 participation/models.py:591
#: participation/models.py:621 participation/models.py:659
msgid "participation"
msgstr "participation"
#: draw/models.py:435
#: draw/models.py:441
msgid "passage index"
msgstr "numéro de passage"
#: draw/models.py:436
#: draw/models.py:442
msgid ""
"The passage order in the pool, between 0 and the size of the pool minus 1."
msgstr ""
"L'ordre de passage dans la poule, de 0 à la taille de la poule moins 1."
#: draw/models.py:444
#: draw/models.py:450
msgid "choose index"
msgstr "numéro de choix"
#: draw/models.py:445
#: draw/models.py:451
msgid ""
"The choice order in the pool, between 0 and the size of the pool minus 1."
msgstr ""
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1."
#: draw/models.py:451 draw/models.py:474 participation/models.py:444
#: participation/models.py:617
#: draw/models.py:457 draw/models.py:480 participation/models.py:444
#: participation/models.py:628
#, python-brace-format
msgid "Problem #{problem}"
msgstr "Problème n°{problem}"
#: draw/models.py:455 draw/models.py:478
#: draw/models.py:461 draw/models.py:484
msgid "accepted problem"
msgstr "problème accepté"
#: draw/models.py:462
#: draw/models.py:468
msgid "passage dice"
msgstr "dé d'ordre de passage"
#: draw/models.py:469
#: draw/models.py:475
msgid "choice dice"
msgstr "dé d'ordre de choix"
#: draw/models.py:483
#: draw/models.py:489
msgid "rejected problems"
msgstr "problèmes rejetés"
#: draw/models.py:509
#: draw/models.py:518
#, python-brace-format
msgid "Draw of the team {trigram} for the pool {letter}{number}"
msgstr "Tirage de l'équipe {trigram} pour la poule {letter}{number}"
#: draw/models.py:515
#: draw/models.py:524
msgid "team draw"
msgstr "tirage d'équipe"
#: draw/models.py:516
#: draw/models.py:525
msgid "team draws"
msgstr "tirages d'équipe"
#: draw/templates/draw/index.html:31
msgid "You don't participate to any tournament."
msgstr "Vous ne participez pas à un tournoi."
#: draw/templates/draw/tournament_content.html:13
msgid "Configuration:"
msgstr "Configuration :"
@ -360,6 +364,11 @@ msgstr "Êtes-vous sûr·e de vouloir annuler le tirage au sort ?"
msgid "Close"
msgstr "Fermer"
#: draw/views.py:31 participation/views.py:159 participation/views.py:456
#: participation/views.py:490
msgid "You are not in a team."
msgstr "Vous n'êtes pas dans une équipe."
#: logs/apps.py:11
msgid "Logs"
msgstr "Logs"
@ -439,16 +448,16 @@ msgid "defender"
msgstr "défenseur⋅se"
#: participation/admin.py:61 participation/models.py:458
#: participation/models.py:660
#: participation/models.py:671
msgid "opponent"
msgstr "opposant⋅e"
#: participation/admin.py:65 participation/models.py:465
#: participation/models.py:661
#: participation/models.py:672
msgid "reporter"
msgstr "rapporteur⋅e"
#: participation/admin.py:120 participation/models.py:615
#: participation/admin.py:120 participation/models.py:626
msgid "problem"
msgstr "numéro de problème"
@ -468,16 +477,16 @@ msgstr "Ce trigramme est déjà utilisé."
msgid "No team was found with this access code."
msgstr "Aucune équipe n'a été trouvée avec ce code d'accès."
#: participation/forms.py:84 participation/forms.py:334
#: registration/forms.py:113 registration/forms.py:135
#: registration/forms.py:157 registration/forms.py:179
#: registration/forms.py:224
#: participation/forms.py:84 participation/forms.py:343
#: registration/forms.py:122 registration/forms.py:144
#: registration/forms.py:166 registration/forms.py:188
#: registration/forms.py:233
msgid "The uploaded file size must be under 2 Mo."
msgstr "Le fichier envoyé doit peser moins de 2 Mo."
#: participation/forms.py:86 registration/forms.py:115
#: registration/forms.py:137 registration/forms.py:159
#: registration/forms.py:181 registration/forms.py:226
#: participation/forms.py:86 registration/forms.py:124
#: registration/forms.py:146 registration/forms.py:168
#: registration/forms.py:190 registration/forms.py:235
msgid "The uploaded file must be a PDF, PNG of JPEG file."
msgstr "Le fichier envoyé doit être au format PDF, PNG ou JPEG."
@ -493,7 +502,7 @@ msgstr "Message à adresser à l'équipe :"
msgid "The uploaded file size must be under 5 Mo."
msgstr "Le fichier envoyé doit peser moins de 5 Mo."
#: participation/forms.py:156 participation/forms.py:336
#: participation/forms.py:156 participation/forms.py:345
msgid "The uploaded file must be a PDF file."
msgstr "Le fichier envoyé doit être au format PDF."
@ -512,6 +521,7 @@ msgid "Add"
msgstr "Ajouter"
#: participation/forms.py:238 registration/forms.py:35 registration/forms.py:60
#: registration/forms.py:91
msgid "This email address is already used."
msgstr "Cette adresse e-mail est déjà utilisée."
@ -519,27 +529,31 @@ msgstr "Cette adresse e-mail est déjà utilisée."
msgid "CSV file:"
msgstr "Tableur au format CSV :"
#: participation/forms.py:265
#: participation/forms.py:266
msgid ""
"This file contains non-UTF-8 content. Please send your sheet as a CSV file."
msgstr ""
"Ce fichier contient des éléments non-UTF-8. Merci d'envoyer votre tableur au "
"format CSV."
#: participation/forms.py:292
#: participation/forms.py:281
msgid "Can't determine the pool size. Are you sure your file is correct?"
msgstr "Impossible de déterminer la taille de la poule. Êtes-vous sûr⋅e que le fichier est correct ?"
#: participation/forms.py:301
msgid "The following note is higher of the maximum expected value:"
msgstr "La note suivante est supérieure au maximum attendu :"
#: participation/forms.py:300
#: participation/forms.py:309
msgid "The following user was not found:"
msgstr "L'utilisateur⋅rice suivant n'a pas été trouvé :"
#: participation/forms.py:317
#: participation/forms.py:326
msgid "The defender, the opponent and the reporter must be different."
msgstr ""
"Læ défenseur⋅se, l'opposant⋅e et læ rapporteur⋅e doivent être différent⋅es."
#: participation/forms.py:321
#: participation/forms.py:330
msgid "This defender did not work on this problem."
msgstr "Ce⋅tte défenseur⋅se ne travaille pas sur ce problème."
@ -722,124 +736,124 @@ msgstr ""
"Nombre de pénalités pour læ défenseur⋅se. Læ défenseur⋅se perd un "
"coefficient 0.5 sur sa présentation orale par pénalité."
#: participation/models.py:547 participation/models.py:550
#: participation/models.py:553 participation/models.py:556
#: participation/models.py:558 participation/models.py:561
#: participation/models.py:564 participation/models.py:567
#, 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:561
#: participation/models.py:572
#, python-brace-format
msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}"
#: participation/models.py:565 participation/models.py:574
#: participation/models.py:655 participation/models.py:697
#: participation/models.py:576 participation/models.py:585
#: participation/models.py:666 participation/models.py:708
msgid "passage"
msgstr "passage"
#: participation/models.py:566
#: participation/models.py:577
msgid "passages"
msgstr "passages"
#: participation/models.py:585
#: participation/models.py:596
msgid "difference"
msgstr "différence"
#: participation/models.py:586
#: participation/models.py:597
msgid "Score to add/remove on the final score"
msgstr "Score à ajouter/retrancher au score final"
#: participation/models.py:593
#: participation/models.py:604
msgid "tweak"
msgstr "harmonisation"
#: participation/models.py:594
#: participation/models.py:605
msgid "tweaks"
msgstr "harmonisations"
#: participation/models.py:622
#: participation/models.py:633
msgid "solution for the final tournament"
msgstr "solution pour la finale"
#: participation/models.py:627 participation/models.py:666
#: participation/models.py:638 participation/models.py:677
msgid "file"
msgstr "fichier"
#: participation/models.py:633
#: participation/models.py:644
#, 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:635
#: participation/models.py:646
msgid "for final"
msgstr "pour la finale"
#: participation/models.py:638
#: participation/models.py:649
msgid "solution"
msgstr "solution"
#: participation/models.py:639
#: participation/models.py:650
msgid "solutions"
msgstr "solutions"
#: participation/models.py:672
#: participation/models.py:683
#, 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:680
#: participation/models.py:691
msgid "synthesis"
msgstr "note de synthèse"
#: participation/models.py:681
#: participation/models.py:692
msgid "syntheses"
msgstr "notes de synthèse"
#: participation/models.py:690
#: participation/models.py:701
msgid "jury"
msgstr "jury"
#: participation/models.py:702
#: participation/models.py:713
msgid "defender writing note"
msgstr "note d'écrit de læ défenseur⋅se"
#: participation/models.py:708
#: participation/models.py:719
msgid "defender oral note"
msgstr "note d'oral de læ défenseur⋅se"
#: participation/models.py:714
#: participation/models.py:725
msgid "opponent writing note"
msgstr "note d'écrit de l'opposant⋅e"
#: participation/models.py:720
#: participation/models.py:731
msgid "opponent oral note"
msgstr "note d'oral de l'opposant⋅e"
#: participation/models.py:726
#: participation/models.py:737
msgid "reporter writing note"
msgstr "note d'écrit de læ rapporteur⋅e"
#: participation/models.py:732
#: participation/models.py:743
msgid "reporter oral note"
msgstr "note d'oral de læ rapporteur⋅e"
#: participation/models.py:738
#: participation/models.py:749
msgid "observer note"
msgstr "note de l'observateur⋅rice"
#: participation/models.py:757
#: participation/models.py:778
#, python-brace-format
msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}"
#: participation/models.py:764
#: participation/models.py:785
msgid "note"
msgstr "note"
#: participation/models.py:765
#: participation/models.py:786
msgid "notes"
msgstr "notes"
@ -909,12 +923,12 @@ msgstr ""
#: participation/templates/participation/create_team.html:11
#: participation/templates/participation/tournament_form.html:14
#: tfjm/templates/base.html:255
#: tfjm/templates/base.html:257
msgid "Create"
msgstr "Créer"
#: participation/templates/participation/join_team.html:11
#: tfjm/templates/base.html:250
#: tfjm/templates/base.html:252
msgid "Join"
msgstr "Rejoindre"
@ -926,8 +940,8 @@ msgstr "Rejoindre"
#: participation/templates/participation/pool_detail.html:88
#: participation/templates/participation/pool_detail.html:106
#: participation/templates/participation/pool_detail.html:111
#: participation/templates/participation/team_detail.html:126
#: participation/templates/participation/team_detail.html:190
#: participation/templates/participation/team_detail.html:128
#: participation/templates/participation/team_detail.html:192
#: participation/templates/participation/tournament_form.html:12
#: participation/templates/participation/update_team.html:12
#: registration/templates/registration/payment_form.html:49
@ -990,9 +1004,9 @@ msgstr "Envoyer une solution"
#: participation/templates/participation/participation_detail.html:59
#: participation/templates/participation/passage_detail.html:132
#: participation/templates/participation/pool_detail.html:116
#: participation/templates/participation/team_detail.html:185
#: participation/templates/participation/team_detail.html:187
#: participation/templates/participation/upload_motivation_letter.html:13
#: participation/templates/participation/upload_notes.html:24
#: participation/templates/participation/upload_notes.html:17
#: participation/templates/participation/upload_solution.html:11
#: participation/templates/participation/upload_synthesis.html:16
#: registration/templates/registration/upload_health_sheet.html:17
@ -1275,21 +1289,21 @@ msgstr "Télécharger"
msgid "Replace"
msgstr "Remplacer"
#: participation/templates/participation/team_detail.html:120
#: participation/templates/participation/team_detail.html:121
msgid "Download all submitted authorizations"
msgstr "Télécharger toutes les autorisations soumises"
#: participation/templates/participation/team_detail.html:128
#: participation/templates/participation/team_detail.html:195
#: participation/templates/participation/team_detail.html:130
#: participation/templates/participation/team_detail.html:197
#: participation/templates/participation/team_leave.html:11
msgid "Leave"
msgstr "Quitter"
#: participation/templates/participation/team_detail.html:138
#: participation/templates/participation/team_detail.html:140
msgid "Access to team participation"
msgstr "Accéder à la participation de l'équipe"
#: participation/templates/participation/team_detail.html:145
#: participation/templates/participation/team_detail.html:147
msgid ""
"Your team has at least 4 members and a coach and all authorizations were "
"given: the team can be validated."
@ -1297,11 +1311,11 @@ msgstr ""
"Votre équipe contient au moins 4 personnes et un⋅e encadrant⋅e et toutes les "
"autorisations ont été données : l'équipe peut être validée."
#: participation/templates/participation/team_detail.html:150
#: participation/templates/participation/team_detail.html:152
msgid "Submit my team to validation"
msgstr "Soumettre mon équipe à validation"
#: participation/templates/participation/team_detail.html:156
#: participation/templates/participation/team_detail.html:158
msgid ""
"Your team must be composed of 4 members and a coach and each member must "
"upload their authorizations and confirm its email address."
@ -1309,15 +1323,15 @@ msgstr ""
"Votre équipe doit être composée d'au moins 4 membres et un⋅e encadrant⋅e et "
"chaque membre doit envoyer ses autorisations et confirmé son adresse e-mail."
#: participation/templates/participation/team_detail.html:161
#: participation/templates/participation/team_detail.html:163
msgid "This team didn't ask for validation yet."
msgstr "L'équipe n'a pas encore demandé à être validée."
#: participation/templates/participation/team_detail.html:167
#: participation/templates/participation/team_detail.html:169
msgid "Your validation is pending."
msgstr "Votre validation est en attente."
#: participation/templates/participation/team_detail.html:171
#: participation/templates/participation/team_detail.html:173
msgid ""
"The team requested to be validated. You may now control the authorizations "
"and confirm that they can participate."
@ -1325,25 +1339,25 @@ msgstr ""
"L'équipe a demandé à être validée. Vous pouvez désormais contrôler les "
"différentes autorisations et confirmer qu'elle peut participer."
#: participation/templates/participation/team_detail.html:177
#: participation/templates/participation/team_detail.html:179
msgid "Validate"
msgstr "Valider"
#: participation/templates/participation/team_detail.html:178
#: participation/templates/participation/team_detail.html:180
msgid "Invalidate"
msgstr "Invalider"
#: participation/templates/participation/team_detail.html:184
#: participation/views.py:337
#: participation/templates/participation/team_detail.html:186
#: participation/views.py:341
msgid "Upload motivation letter"
msgstr "Envoyer la lettre de motivation"
#: participation/templates/participation/team_detail.html:189
#: participation/templates/participation/team_detail.html:191
msgid "Update team"
msgstr "Modifier l'équipe"
#: participation/templates/participation/team_detail.html:194
#: participation/views.py:446
#: participation/templates/participation/team_detail.html:196
#: participation/views.py:450
msgid "Leave team"
msgstr "Quitter l'équipe"
@ -1352,7 +1366,7 @@ msgid "Are you sure that you want to leave this team?"
msgstr "Êtes-vous sûr·e de vouloir quitter cette équipe ?"
#: participation/templates/participation/team_list.html:6
#: tfjm/templates/base.html:243
#: tfjm/templates/base.html:245
msgid "All teams"
msgstr "Toutes les équipes"
@ -1435,7 +1449,7 @@ msgid "Add pool"
msgstr "Ajouter une poule"
#: participation/templates/participation/tournament_list.html:6
#: tfjm/templates/base.html:239
#: tfjm/templates/base.html:241
msgid "All tournaments"
msgstr "Tous les tournois"
@ -1447,7 +1461,7 @@ msgstr "Ajouter un tournoi"
msgid "Back to the team detail"
msgstr "Retour aux détails de l'utilisateur⋅rice"
#: participation/templates/participation/upload_notes.html:18
#: participation/templates/participation/upload_notes.html:11
msgid "Download empty notation sheet"
msgstr "Télécharger la fiche de notation vierge"
@ -1455,49 +1469,44 @@ msgstr "Télécharger la fiche de notation vierge"
msgid "Templates:"
msgstr "Modèles :"
#: participation/views.py:48 tfjm/templates/base.html:73
#: tfjm/templates/base.html:254
#: participation/views.py:52 tfjm/templates/base.html:73
#: tfjm/templates/base.html:256
msgid "Create team"
msgstr "Créer une équipe"
#: participation/views.py:57 participation/views.py:102
#: participation/views.py:61 participation/views.py:106
msgid "You don't participate, so you can't create a team."
msgstr "Vous ne participez pas, vous ne pouvez pas créer d'équipe."
#: participation/views.py:59 participation/views.py:104
#: participation/views.py:63 participation/views.py:108
msgid "You are already in a team."
msgstr "Vous êtes déjà dans une équipe."
#: participation/views.py:93 tfjm/templates/base.html:78
#: tfjm/templates/base.html:249
#: participation/views.py:97 tfjm/templates/base.html:78
#: tfjm/templates/base.html:251
msgid "Join team"
msgstr "Rejoindre une équipe"
#: participation/views.py:155 participation/views.py:452
#: participation/views.py:486
msgid "You are not in a team."
msgstr "Vous n'êtes pas dans une équipe."
#: participation/views.py:156 participation/views.py:487
#: participation/views.py:160 participation/views.py:491
msgid "You don't participate, so you don't have any team."
msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe."
#: participation/views.py:182
#: participation/views.py:186
#, python-brace-format
msgid "Detail of team {trigram}"
msgstr "Détails de l'équipe {trigram}"
#: participation/views.py:219
#: participation/views.py:223
msgid "You don't participate, so you can't request the validation of the team."
msgstr ""
"Vous ne participez pas, vous ne pouvez pas demander la validation de "
"l'équipe."
#: participation/views.py:222
#: participation/views.py:226
msgid "The validation of the team is already done or pending."
msgstr "La validation de l'équipe est déjà faite ou en cours."
#: participation/views.py:225
#: participation/views.py:229
msgid ""
"The team can't be validated: missing email address confirmations, "
"authorizations, people, motivation letter or the tournament is not set."
@ -1506,93 +1515,93 @@ msgstr ""
"d'adresse e-mail, soit une autorisation, soit des personnes, soit la lettre "
"de motivation, soit le tournoi n'a pas été choisi."
#: participation/views.py:247
#: participation/views.py:251
msgid "You are not an organizer of the tournament."
msgstr "Vous n'êtes pas un⋅e organisateur⋅rice du tournoi."
#: participation/views.py:250
#: participation/views.py:254
msgid "This team has no pending validation."
msgstr "L'équipe n'a pas de validation en attente."
#: participation/views.py:280
#: participation/views.py:284
msgid "You must specify if you validate the registration or not."
msgstr "Vous devez spécifier si vous validez l'inscription ou non."
#: participation/views.py:315
#: participation/views.py:319
#, python-brace-format
msgid "Update team {trigram}"
msgstr "Mise à jour de l'équipe {trigram}"
#: participation/views.py:376 participation/views.py:432
#: participation/views.py:380 participation/views.py:436
#, python-brace-format
msgid "Motivation letter of {team}.{ext}"
msgstr "Lettre de motivation de {team}.{ext}"
#: participation/views.py:407
#: participation/views.py:411
#, python-brace-format
msgid "Photo authorization of {participant}.{ext}"
msgstr "Autorisation de droit à l'image de {participant}.{ext}"
#: participation/views.py:413
#: participation/views.py:417
#, python-brace-format
msgid "Parental authorization of {participant}.{ext}"
msgstr "Autorisation parentale de {participant}.{ext}"
#: participation/views.py:420
#: participation/views.py:424
#, python-brace-format
msgid "Health sheet of {participant}.{ext}"
msgstr "Fiche sanitaire de {participant}.{ext}"
#: participation/views.py:426
#: participation/views.py:430
#, python-brace-format
msgid "Vaccine sheet of {participant}.{ext}"
msgstr "Carnet de vaccination de {participant}.{ext}"
#: participation/views.py:436
#: participation/views.py:440
#, python-brace-format
msgid "Photo authorizations of team {trigram}.zip"
msgstr "Autorisations de droit à l'image de l'équipe {trigram}.zip"
#: participation/views.py:454
#: participation/views.py:458
msgid "The team is already validated or the validation is pending."
msgstr "La validation de l'équipe est déjà faite ou en cours."
#: participation/views.py:501
#: participation/views.py:505
msgid "The team is not validated yet."
msgstr "L'équipe n'est pas encore validée."
#: participation/views.py:515
#: participation/views.py:519
#, python-brace-format
msgid "Participation of team {trigram}"
msgstr "Participation de l'équipe {trigram}"
#: participation/views.py:643
#: participation/views.py:647
msgid "You can't upload a solution after the deadline."
msgstr "Vous ne pouvez pas envoyer de solution après la date limite."
#: participation/views.py:734
#: participation/views.py:738
#, python-brace-format
msgid "Jurys of {pool}"
msgstr "Juré⋅es de la {pool}"
#: participation/views.py:761
#: participation/views.py:765
msgid "New TFJM² jury account"
msgstr "Nouveau compte de juré⋅e pour le TFJM²"
#: participation/views.py:774
#: participation/views.py:778
#, python-brace-format
msgid "The jury {name} has been successfully added!"
msgstr "Læ juré⋅e {name} a été ajouté⋅e avec succès !"
#: participation/views.py:810
#: participation/views.py:814
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:818
#: participation/views.py:824
msgid "Notes were successfully uploaded."
msgstr "Les notes ont bien été envoyées."
#: participation/views.py:979
#: participation/views.py:1488
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."
@ -1622,11 +1631,11 @@ msgstr "participant⋅e"
msgid "coach"
msgstr "encadrant⋅e"
#: registration/forms.py:218
#: registration/forms.py:227
msgid "Pending"
msgstr "En attente"
#: registration/forms.py:234
#: registration/forms.py:243
msgid "You must upload your scholarship attestation."
msgstr "Vous devez envoyer votre attestation de bourse."
@ -1966,8 +1975,8 @@ msgid "Your password has been set. You may go ahead and log in now."
msgstr "Votre mot de passe a été changé. Vous pouvez désormais vous connecter."
#: registration/templates/registration/password_reset_complete.html:10
#: tfjm/templates/base.html:133 tfjm/templates/base.html:259
#: tfjm/templates/base.html:260 tfjm/templates/registration/login.html:7
#: tfjm/templates/base.html:135 tfjm/templates/base.html:261
#: tfjm/templates/base.html:262 tfjm/templates/registration/login.html:7
#: tfjm/templates/registration/login.html:8
#: tfjm/templates/registration/login.html:25
msgid "Log in"
@ -2382,35 +2391,35 @@ msgstr "Mon équipe"
msgid "My participation"
msgstr "Ma participation"
#: tfjm/templates/base.html:103
#: tfjm/templates/base.html:105
msgid "Chat"
msgstr "Chat"
#: tfjm/templates/base.html:107
#: tfjm/templates/base.html:109
msgid "Administration"
msgstr "Administration"
#: tfjm/templates/base.html:115
#: tfjm/templates/base.html:117
msgid "Search…"
msgstr "Chercher…"
#: tfjm/templates/base.html:124
#: tfjm/templates/base.html:126
msgid "Return to admin view"
msgstr "Retourner à l'interface administrateur⋅rice"
#: tfjm/templates/base.html:129
#: tfjm/templates/base.html:131
msgid "Register"
msgstr "S'inscrire"
#: tfjm/templates/base.html:145
#: tfjm/templates/base.html:147
msgid "My account"
msgstr "Mon compte"
#: tfjm/templates/base.html:150
#: tfjm/templates/base.html:152
msgid "Log out"
msgstr "Déconnexion"
#: tfjm/templates/base.html:168
#: tfjm/templates/base.html:170
#, python-format
msgid ""
"Your email address is not validated. Please click on the link you received "
@ -2421,15 +2430,15 @@ msgstr ""
"avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur <a "
"href=\"%(send_email_url)s\">ce lien</a>."
#: tfjm/templates/base.html:197
#: tfjm/templates/base.html:199
msgid "Contact us"
msgstr "Nous contacter"
#: tfjm/templates/base.html:224
#: tfjm/templates/base.html:226
msgid "About"
msgstr "À propos"
#: tfjm/templates/base.html:246
#: tfjm/templates/base.html:248
msgid "Search results"
msgstr "Résultats de la recherche"

View File

@ -92,11 +92,13 @@
{% endif %}
{% endif %}
{% if user.is_authenticated %}
<li class="nav-item active">
<a class="nav-link" href="{% url 'draw:index' %}">
<i class="fas fa-archive"></i> {% trans "Draw" %}
</a>
</li>
{% if user.is_volunteer or user.registration.team %}
<li class="nav-item active">
<a class="nav-link" href="{% url 'draw:index' %}">
<i class="fas fa-archive"></i> {% trans "Draw" %}
</a>
</li>
{% endif %}
{% endif %}
<li class="nav-item active">
<a class="nav-link" href="{% url "participation:chat" %}">