diff --git a/draw/templates/draw/index.html b/draw/templates/draw/index.html
index 840bbed..ec6fc6d 100644
--- a/draw/templates/draw/index.html
+++ b/draw/templates/draw/index.html
@@ -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 %}
+ {% else %}
+
+ {% trans "You don't participate to any tournament." %}
+
{% endfor %}
{% endblock %}
diff --git a/draw/views.py b/draw/views.py
index 6e98e1c..db8a994 100644
--- a/draw/views.py
+++ b/draw/views.py
@@ -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())
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 4285811..5174670 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 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 \n"
"Language-Team: LANGUAGE \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 ce lien."
-#: 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"
diff --git a/tfjm/templates/base.html b/tfjm/templates/base.html
index 7bc9212..4d9f6df 100644
--- a/tfjm/templates/base.html
+++ b/tfjm/templates/base.html
@@ -92,11 +92,13 @@
{% endif %}
{% endif %}
{% if user.is_authenticated %}
-
-
- {% trans "Draw" %}
-
-
+ {% if user.is_volunteer or user.registration.team %}
+
+
+ {% trans "Draw" %}
+
+
+ {% endif %}
{% endif %}