Merge branch 'dev' into 'master'

Remote tournaments + Animath logo

See merge request animath/si/plateforme-tfjm!12
This commit is contained in:
Yohann D'ANELLO 2021-01-23 19:27:56 +00:00
commit 629c4d2367
10 changed files with 322 additions and 182 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.0.11 on 2021-01-23 18:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('participation', '0002_auto_20210122_1926'),
]
operations = [
migrations.AddField(
model_name='tournament',
name='remote',
field=models.BooleanField(default=False, verbose_name='remote'),
),
]

View File

@ -157,6 +157,11 @@ class Tournament(models.Model):
default=21,
)
remote = models.BooleanField(
verbose_name=_("remote"),
default=False,
)
inscription_limit = models.DateTimeField(
verbose_name=_("limit date for registrations"),
default=timezone.now,

View File

@ -60,31 +60,33 @@
{% endfor %}
</dd>
<dt class="col-sm-6 text-right">{% trans "Health sheets:" %}</dt>
<dd class="col-sm-6">
{% for student in team.students.all %}
{% if student.under_18 %}
{% if student.health_sheet %}
<a href="{{ student.health_sheet.url }}" data-turbolinks="false">{{ student }}</a>{% if not forloop.last %},{% endif %}
{% else %}
{{ student }} ({% trans "Not uploaded yet" %}){% if not forloop.last %},{% endif %}
{% if not team.participation.tournament.remote %}
<dt class="col-sm-6 text-right">{% trans "Health sheets:" %}</dt>
<dd class="col-sm-6">
{% for student in team.students.all %}
{% if student.under_18 %}
{% if student.health_sheet %}
<a href="{{ student.health_sheet.url }}" data-turbolinks="false">{{ student }}</a>{% if not forloop.last %},{% endif %}
{% else %}
{{ student }} ({% trans "Not uploaded yet" %}){% if not forloop.last %},{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</dd>
{% endfor %}
</dd>
<dt class="col-sm-6 text-right">{% trans "Parental authorizations:" %}</dt>
<dd class="col-sm-6">
{% for student in team.students.all %}
{% if student.under_18 %}
{% if student.parental_authorization %}
<a href="{{ student.parental_authorization.url }}" data-turbolinks="false">{{ student }}</a>{% if not forloop.last %},{% endif %}
{% else %}
{{ student }} ({% trans "Not uploaded yet" %}){% if not forloop.last %},{% endif %}
<dt class="col-sm-6 text-right">{% trans "Parental authorizations:" %}</dt>
<dd class="col-sm-6">
{% for student in team.students.all %}
{% if student.under_18 %}
{% if student.parental_authorization %}
<a href="{{ student.parental_authorization.url }}" data-turbolinks="false">{{ student }}</a>{% if not forloop.last %},{% endif %}
{% else %}
{{ student }} ({% trans "Not uploaded yet" %}){% if not forloop.last %},{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</dd>
{% endfor %}
</dd>
{% endif %}
<dt class="col-sm-6 text-right">{% trans "Motivation letter:" %}</dt>
<dd class="col-sm-6">

View File

@ -21,6 +21,9 @@
<dt class="col-xl-6 text-right">{% trans 'price'|capfirst %}</dt>
<dd class="col-xl-6">{% if tournament.price %}{{ tournament.price }} €{% else %}{% trans "Free" %}{% endif %}</dd>
<dt class="col-xl-6 text-right">{% trans 'remote'|capfirst %}</dt>
<dd class="col-xl-6">{{ tournament.remote|yesno }}</dd>
<dt class="col-xl-6 text-right">{% trans 'dates'|capfirst %}</dt>
<dd class="col-xl-6">{% trans "From" %} {{ tournament.date_start }} {% trans "to" %} {{ tournament.date_end }}</dd>

View File

@ -292,6 +292,8 @@ class TestStudentParticipation(TestCase):
self.assertEqual(resp.status_code, 200)
self.assertFalse(resp.context["can_validate"])
self.team.participation.tournament = self.tournament
self.team.participation.save()
self.team.motivation_letter = "i_am_motivated.pdf"
self.team.save()
resp = self.client.get(reverse("participation:team_detail", args=(self.team.pk,)))

View File

@ -177,10 +177,13 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView)
# A team is complete when there are at least 4 members plus a coache that have sent their authorizations,
# their health sheet, they confirmed their email address and under-18 people sent their parental authorization.
context["can_validate"] = team.students.count() >= 4 and team.coaches.exists() and \
team.participation.tournament and \
all(r.email_confirmed for r in team.students.all()) and \
all(r.photo_authorization for r in team.participants.all()) and \
all(r.health_sheet for r in team.students.all() if r.under_18) and \
all(r.parental_authorization for r in team.students.all() if r.under_18) and \
(team.participation.tournament.remote
or all(r.health_sheet for r in team.students.all() if r.under_18)) and \
(team.participation.tournament.remote
or all(r.parental_authorization for r in team.students.all() if r.under_18)) and \
team.motivation_letter
return context

View File

@ -62,7 +62,7 @@
</dd>
{% endif %}
{% if user_object.registration.studentregistration %}
{% if user_object.registration.studentregistration and user_object.registration.participation.tournament and not user_object.registration.participation.tournament.remote %}
{% if user_object.registration.under_18 %}
<dt class="col-sm-6 text-right">{% trans "Health sheet:" %}</dt>
<dd class="col-sm-6">

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-22 09:43+0100\n"
"POT-Creation-Date: 2021-01-23 19:56+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -99,8 +99,8 @@ msgstr "changelogs"
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}"
#: apps/participation/admin.py:19 apps/participation/models.py:309
#: apps/participation/tables.py:44 apps/registration/models.py:346
#: apps/participation/admin.py:19 apps/participation/models.py:314
#: apps/participation/tables.py:44 apps/registration/models.py:352
msgid "valid"
msgstr "valide"
@ -178,12 +178,12 @@ msgstr "lettre de motivation"
msgid "Team {name} ({trigram})"
msgstr "Équipe {name} ({trigram})"
#: apps/participation/models.py:122 apps/participation/models.py:294
#: apps/participation/models.py:122 apps/participation/models.py:299
#: apps/registration/models.py:123
msgid "team"
msgstr "équipe"
#: apps/participation/models.py:123 apps/participation/tables.py:84
#: apps/participation/models.py:123 apps/participation/tables.py:85
msgid "teams"
msgstr "équipes"
@ -210,98 +210,103 @@ msgid "price"
msgstr "prix"
#: apps/participation/models.py:161
#: apps/participation/templates/participation/tournament_detail.html:24
msgid "remote"
msgstr "à distance"
#: apps/participation/models.py:166
msgid "limit date for registrations"
msgstr "date limite d'inscription"
#: apps/participation/models.py:166
#: apps/participation/models.py:171
msgid "limit date to upload solutions"
msgstr "date limite pour envoyer les solutions"
#: apps/participation/models.py:171
#: apps/participation/models.py:176
msgid "random draw for solutions"
msgstr "tirage au sort des solutions"
#: apps/participation/models.py:176
#: apps/participation/models.py:181
msgid "limit date to upload the syntheses for the first phase"
msgstr "date limite pour envoyer les notes de synthèses pour la première phase"
#: apps/participation/models.py:181
#: apps/participation/models.py:186
msgid "date when the solutions for the second round become available"
msgstr "date à laquelle les solutions pour le second tour sont accessibles"
#: apps/participation/models.py:186
#: apps/participation/models.py:191
msgid "limit date to upload the syntheses for the second phase"
msgstr "date limite d'envoi des notes de synthèse pour la seconde phase"
#: apps/participation/models.py:191
#: apps/participation/templates/participation/tournament_detail.html:45
#: apps/participation/models.py:196
#: apps/participation/templates/participation/tournament_detail.html:48
msgid "description"
msgstr "description"
#: apps/participation/models.py:197
#: apps/participation/models.py:202
#: apps/participation/templates/participation/tournament_detail.html:12
msgid "organizers"
msgstr "organisateurs"
#: apps/participation/models.py:202
#: apps/participation/models.py:207
msgid "final"
msgstr "finale"
#: apps/participation/models.py:279 apps/participation/models.py:303
#: apps/participation/models.py:335
#: apps/participation/models.py:284 apps/participation/models.py:308
#: apps/participation/models.py:340
msgid "tournament"
msgstr "tournoi"
#: apps/participation/models.py:280
#: apps/participation/models.py:285
msgid "tournaments"
msgstr "tournois"
#: apps/participation/models.py:310
#: apps/participation/models.py:315
msgid "The participation got the validation of the organizers."
msgstr "La participation a été validée par les organisateurs."
#: apps/participation/models.py:315
#: apps/participation/models.py:320
msgid "selected for final"
msgstr "sélectionnée pour la finale"
#: apps/participation/models.py:316
#: apps/participation/models.py:321
msgid "The team is selected for the final tournament."
msgstr "L'équipe est sélectionnée pour la finale."
#: apps/participation/models.py:323
#: apps/participation/models.py:328
#, python-brace-format
msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})"
#: apps/participation/models.py:326 apps/participation/models.py:523
#: apps/participation/models.py:331 apps/participation/models.py:523
#: apps/participation/models.py:561
msgid "participation"
msgstr "participation"
#: apps/participation/models.py:327 apps/participation/models.py:349
#: apps/participation/models.py:332 apps/participation/models.py:354
msgid "participations"
msgstr "participations"
#: apps/participation/models.py:339
#: apps/participation/models.py:344
msgid "round"
msgstr "tour"
#: apps/participation/models.py:341 apps/participation/models.py:342
#: apps/participation/models.py:346 apps/participation/models.py:347
#, python-brace-format
msgid "Round {round}"
msgstr "Tour {round}"
#: apps/participation/models.py:355
#: apps/participation/models.py:360
msgid "juries"
msgstr "jurys"
#: apps/participation/models.py:362
msgid "BigBlueButton code"
msgstr "Code BigBlueButton"
#: apps/participation/models.py:367
msgid "BigBlueButton URL"
msgstr "Lien BigBlueButton"
#: apps/participation/models.py:363
msgid "The code of the form xxx-xxx-xxx at the end of the BBB link."
msgstr "Le code de la forme xxx-xxx-xxx à la fin du lien BBB."
#: apps/participation/models.py:368
msgid "The link of the BBB visio for this pool."
msgstr "Le lien du salon BBB pour cette poule."
#: apps/participation/models.py:382
#, python-brace-format
@ -329,7 +334,7 @@ msgstr "solution défendue"
msgid "Problem #{problem}"
msgstr "Problème n°{problem}"
#: apps/participation/models.py:417 apps/participation/tables.py:105
#: apps/participation/models.py:417 apps/participation/tables.py:106
msgid "defender"
msgstr "défenseur"
@ -461,7 +466,7 @@ msgstr "date"
msgid "From {start} to {end}"
msgstr "Du {start} au {end}"
#: apps/participation/tables.py:90
#: apps/participation/tables.py:91
msgid "No defined team"
msgstr "Pas d'équipe définie"
@ -501,12 +506,12 @@ msgstr ""
#: apps/participation/templates/participation/create_team.html:11
#: apps/participation/templates/participation/tournament_form.html:14
#: tfjm/templates/base.html:234
#: tfjm/templates/base.html:240
msgid "Create"
msgstr "Créer"
#: apps/participation/templates/participation/join_team.html:11
#: tfjm/templates/base.html:229
#: tfjm/templates/base.html:235
msgid "Join"
msgstr "Rejoindre"
@ -517,8 +522,8 @@ msgstr "Rejoindre"
#: apps/participation/templates/participation/pool_detail.html:55
#: apps/participation/templates/participation/pool_detail.html:73
#: apps/participation/templates/participation/pool_detail.html:78
#: apps/participation/templates/participation/team_detail.html:109
#: apps/participation/templates/participation/team_detail.html:173
#: apps/participation/templates/participation/team_detail.html:111
#: apps/participation/templates/participation/team_detail.html:175
#: apps/participation/templates/participation/tournament_form.html:12
#: apps/participation/templates/participation/update_team.html:12
#: apps/registration/templates/registration/payment_form.html:49
@ -574,7 +579,7 @@ msgstr "Envoyer une solution"
#: apps/participation/templates/participation/participation_detail.html:50
#: apps/participation/templates/participation/passage_detail.html:110
#: apps/participation/templates/participation/team_detail.html:168
#: apps/participation/templates/participation/team_detail.html:170
#: apps/participation/templates/participation/upload_motivation_letter.html:13
#: apps/participation/templates/participation/upload_solution.html:11
#: apps/participation/templates/participation/upload_synthesis.html:11
@ -696,7 +701,7 @@ msgid "BigBlueButton link:"
msgstr "Lien BigBlueButton :"
#: apps/participation/templates/participation/pool_detail.html:41
#: apps/participation/templates/participation/tournament_detail.html:91
#: apps/participation/templates/participation/tournament_detail.html:94
msgid "Ranking"
msgstr "Classement"
@ -715,7 +720,7 @@ msgid "Passages"
msgstr "Passages"
#: apps/participation/templates/participation/pool_detail.html:68
#: apps/participation/templates/participation/tournament_detail.html:105
#: apps/participation/templates/participation/tournament_detail.html:108
msgid "Add"
msgstr "Ajouter"
@ -754,25 +759,25 @@ msgid "Photo authorizations:"
msgstr "Autorisations de droit à l'image :"
#: apps/participation/templates/participation/team_detail.html:58
#: apps/participation/templates/participation/team_detail.html:70
#: apps/participation/templates/participation/team_detail.html:83
#: apps/participation/templates/participation/team_detail.html:94
#: apps/participation/templates/participation/team_detail.html:71
#: apps/participation/templates/participation/team_detail.html:84
#: apps/participation/templates/participation/team_detail.html:96
msgid "Not uploaded yet"
msgstr "Pas encore envoyée"
#: apps/participation/templates/participation/team_detail.html:63
#: apps/participation/templates/participation/team_detail.html:64
msgid "Health sheets:"
msgstr "Fiches sanitaires :"
#: apps/participation/templates/participation/team_detail.html:76
#: apps/participation/templates/participation/team_detail.html:77
msgid "Parental authorizations:"
msgstr "Autorisations parentales :"
#: apps/participation/templates/participation/team_detail.html:89
#: apps/participation/templates/participation/team_detail.html:91
msgid "Motivation letter:"
msgstr "Lettre de motivation :"
#: apps/participation/templates/participation/team_detail.html:92
#: apps/participation/templates/participation/team_detail.html:94
#: apps/registration/templates/registration/upload_health_sheet.html:12
#: apps/registration/templates/registration/upload_parental_authorization.html:12
#: apps/registration/templates/registration/user_detail.html:57
@ -781,28 +786,28 @@ msgstr "Lettre de motivation :"
msgid "Download"
msgstr "Télécharger"
#: apps/participation/templates/participation/team_detail.html:97
#: apps/participation/templates/participation/team_detail.html:99
#: apps/registration/templates/registration/user_detail.html:60
#: apps/registration/templates/registration/user_detail.html:73
#: apps/registration/templates/registration/user_detail.html:83
msgid "Replace"
msgstr "Remplacer"
#: apps/participation/templates/participation/team_detail.html:104
#: apps/participation/templates/participation/team_detail.html:106
msgid "Download all authorizations"
msgstr "Télécharger toutes les autorisations"
#: apps/participation/templates/participation/team_detail.html:111
#: apps/participation/templates/participation/team_detail.html:178
#: apps/participation/templates/participation/team_detail.html:113
#: apps/participation/templates/participation/team_detail.html:180
#: apps/participation/templates/participation/team_leave.html:11
msgid "Leave"
msgstr "Quitter"
#: apps/participation/templates/participation/team_detail.html:121
#: apps/participation/templates/participation/team_detail.html:123
msgid "Access to team participation"
msgstr "Accéder à la participation de l'équipe"
#: apps/participation/templates/participation/team_detail.html:128
#: apps/participation/templates/participation/team_detail.html:130
msgid ""
"Your team has at least 4 members and a coach and all authorizations were "
"given: the team can be validated."
@ -810,11 +815,11 @@ msgstr ""
"Votre équipe contient au moins 4 personnes et un encadrant et toutes les "
"autorisations ont été données : l'équipe peut être validée."
#: apps/participation/templates/participation/team_detail.html:133
#: apps/participation/templates/participation/team_detail.html:135
msgid "Submit my team to validation"
msgstr "Soumettre mon équipe à validation"
#: apps/participation/templates/participation/team_detail.html:139
#: apps/participation/templates/participation/team_detail.html:141
msgid ""
"Your team must be composed of 4 members and a coach and each member must "
"upload their authorizations and confirm its email address."
@ -822,15 +827,15 @@ msgstr ""
"Votre équipe doit être composée de 4 membres et un encadrant et chaque "
"membre doit envoyer ses autorisations et confirmé son adresse e-mail."
#: apps/participation/templates/participation/team_detail.html:144
#: apps/participation/templates/participation/team_detail.html:146
msgid "This team didn't ask for validation yet."
msgstr "L'équipe n'a pas encore demandé à être validée."
#: apps/participation/templates/participation/team_detail.html:150
#: apps/participation/templates/participation/team_detail.html:152
msgid "Your validation is pending."
msgstr "Votre validation est en attente."
#: apps/participation/templates/participation/team_detail.html:154
#: apps/participation/templates/participation/team_detail.html:156
msgid ""
"The team requested to be validated. You may now control the authorizations "
"and confirm that they can participate."
@ -838,25 +843,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."
#: apps/participation/templates/participation/team_detail.html:160
#: apps/participation/templates/participation/team_detail.html:162
msgid "Validate"
msgstr "Valider"
#: apps/participation/templates/participation/team_detail.html:161
#: apps/participation/templates/participation/team_detail.html:163
msgid "Invalidate"
msgstr "Invalider"
#: apps/participation/templates/participation/team_detail.html:167
#: apps/participation/views.py:317
#: apps/participation/templates/participation/team_detail.html:169
#: apps/participation/views.py:320
msgid "Upload motivation letter"
msgstr "Envoyer la lettre de motivation"
#: apps/participation/templates/participation/team_detail.html:172
#: apps/participation/templates/participation/team_detail.html:174
msgid "Update team"
msgstr "Modifier l'équipe"
#: apps/participation/templates/participation/team_detail.html:177
#: apps/participation/views.py:418
#: apps/participation/templates/participation/team_detail.html:179
#: apps/participation/views.py:421
msgid "Leave team"
msgstr "Quitter l'équipe"
@ -865,7 +870,7 @@ msgid "Are you sure that you want to leave this team?"
msgstr "Êtes-vous sûr·e de vouloir quitter cette équipe ?"
#: apps/participation/templates/participation/team_list.html:6
#: tfjm/templates/base.html:222
#: tfjm/templates/base.html:228
msgid "All teams"
msgstr "Toutes les équipes"
@ -877,78 +882,78 @@ msgstr "taille"
msgid "Free"
msgstr "Gratuit"
#: apps/participation/templates/participation/tournament_detail.html:24
#: apps/participation/templates/participation/tournament_detail.html:27
msgid "dates"
msgstr "dates"
#: apps/participation/templates/participation/tournament_detail.html:25
#: apps/participation/templates/participation/tournament_detail.html:28
msgid "From"
msgstr "Du"
#: apps/participation/templates/participation/tournament_detail.html:25
#: apps/participation/templates/participation/tournament_detail.html:28
msgid "to"
msgstr "au"
#: apps/participation/templates/participation/tournament_detail.html:27
#: apps/participation/templates/participation/tournament_detail.html:30
msgid "date of registration closing"
msgstr "date de clôture des inscriptions"
#: apps/participation/templates/participation/tournament_detail.html:30
#: apps/participation/templates/participation/tournament_detail.html:33
msgid "date of maximal solution submission"
msgstr "date limite d'envoi des solutions"
#: apps/participation/templates/participation/tournament_detail.html:33
#: apps/participation/templates/participation/tournament_detail.html:36
msgid "date of the random draw"
msgstr "date du tirage au sort"
#: apps/participation/templates/participation/tournament_detail.html:36
#: apps/participation/templates/participation/tournament_detail.html:39
msgid "date of maximal syntheses submission for the first round"
msgstr "date limite de soumission des notes de synthèse pour le premier tour"
#: apps/participation/templates/participation/tournament_detail.html:39
#: apps/participation/templates/participation/tournament_detail.html:42
msgid "date when solutions of round 2 are available"
msgstr ""
"date à partir de laquelle les solutions pour le second tour sont disponibles"
#: apps/participation/templates/participation/tournament_detail.html:42
#: apps/participation/templates/participation/tournament_detail.html:45
msgid "date of maximal syntheses submission for the second round"
msgstr "date limite de soumission des notes de synthèse pour le second tour"
#: apps/participation/templates/participation/tournament_detail.html:48
#: apps/participation/templates/participation/tournament_detail.html:51
msgid "To contact organizers"
msgstr "Pour contacter les organisateurs"
#: apps/participation/templates/participation/tournament_detail.html:51
#: apps/participation/templates/participation/tournament_detail.html:54
msgid "To contact juries"
msgstr "Pour contacter les jurys"
#: apps/participation/templates/participation/tournament_detail.html:54
#: apps/participation/templates/participation/tournament_detail.html:57
msgid "To contact valid teams"
msgstr "Pour contacter les équipes valides"
#: apps/participation/templates/participation/tournament_detail.html:61
#: apps/participation/templates/participation/tournament_detail.html:64
msgid "Edit tournament"
msgstr "Modifier le tournoi"
#: apps/participation/templates/participation/tournament_detail.html:68
#: apps/participation/templates/participation/tournament_detail.html:71
#: tfjm/templates/base.html:68
msgid "Teams"
msgstr "Équipes"
#: apps/participation/templates/participation/tournament_detail.html:76
#: apps/participation/templates/participation/tournament_detail.html:79
msgid "Pools"
msgstr "Poules"
#: apps/participation/templates/participation/tournament_detail.html:83
#: apps/participation/templates/participation/tournament_detail.html:86
msgid "Add new pool"
msgstr "Ajouter une nouvelle poule"
#: apps/participation/templates/participation/tournament_detail.html:104
#: apps/participation/templates/participation/tournament_detail.html:107
msgid "Add pool"
msgstr "Ajouter une poule"
#: apps/participation/templates/participation/tournament_list.html:6
#: tfjm/templates/base.html:218
#: tfjm/templates/base.html:224
msgid "All tournaments"
msgstr "Tous les tournois"
@ -961,7 +966,7 @@ msgid "Back to the team detail"
msgstr "Retour aux détails de l'utilisateur"
#: apps/participation/views.py:42 tfjm/templates/base.html:74
#: tfjm/templates/base.html:233
#: tfjm/templates/base.html:239
msgid "Create team"
msgstr "Créer une équipe"
@ -974,16 +979,16 @@ msgid "You are already in a team."
msgstr "Vous êtes déjà dans une équipe."
#: apps/participation/views.py:87 tfjm/templates/base.html:79
#: tfjm/templates/base.html:228
#: tfjm/templates/base.html:234
msgid "Join team"
msgstr "Rejoindre une équipe"
#: apps/participation/views.py:149 apps/participation/views.py:424
#: apps/participation/views.py:457
#: apps/participation/views.py:149 apps/participation/views.py:427
#: apps/participation/views.py:460
msgid "You are not in a team."
msgstr "Vous n'êtes pas dans une équipe."
#: apps/participation/views.py:150 apps/participation/views.py:458
#: apps/participation/views.py:150 apps/participation/views.py:461
msgid "You don't participate, so you don't have any team."
msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe."
@ -992,17 +997,17 @@ msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe."
msgid "Detail of team {trigram}"
msgstr "Détails de l'équipe {trigram}"
#: apps/participation/views.py:208
#: apps/participation/views.py:211
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."
#: apps/participation/views.py:211
#: apps/participation/views.py:214
msgid "The validation of the team is already done or pending."
msgstr "La validation de l'équipe est déjà faite ou en cours."
#: apps/participation/views.py:214
#: apps/participation/views.py:217
msgid ""
"The team can't be validated: missing email address confirmations, "
"authorizations, people, motivation letter or the tournament is not set."
@ -1011,66 +1016,66 @@ msgstr ""
"d'adresse e-mail, soit une autorisation, soit des personnes, soit la lettre "
"de motivation, soit le tournoi n'a pas été choisi."
#: apps/participation/views.py:233
#: apps/participation/views.py:236
msgid "You are not an administrator."
msgstr "Vous n'êtes pas administrateur."
#: apps/participation/views.py:236
#: apps/participation/views.py:239
msgid "This team has no pending validation."
msgstr "L'équipe n'a pas de validation en attente."
#: apps/participation/views.py:266
#: apps/participation/views.py:269
msgid "You must specify if you validate the registration or not."
msgstr "Vous devez spécifier si vous validez l'inscription ou non."
#: apps/participation/views.py:297
#: apps/participation/views.py:300
#, python-brace-format
msgid "Update team {trigram}"
msgstr "Mise à jour de l'équipe {trigram}"
#: apps/participation/views.py:355 apps/participation/views.py:404
#: apps/participation/views.py:358 apps/participation/views.py:407
#, python-brace-format
msgid "Motivation letter of {team}.{ext}"
msgstr "Lettre de motivation de {team}.{ext}"
#: apps/participation/views.py:385
#: apps/participation/views.py:388
#, python-brace-format
msgid "Photo authorization of {participant}.{ext}"
msgstr "Autorisation de droit à l'image de {participant}.{ext}"
#: apps/participation/views.py:391
#: apps/participation/views.py:394
#, python-brace-format
msgid "Parental authorization of {participant}.{ext}"
msgstr "Autorisation parentale de {participant}.{ext}"
#: apps/participation/views.py:398
#: apps/participation/views.py:401
#, python-brace-format
msgid "Health sheet of {participant}.{ext}"
msgstr "Fiche sanitaire de {participant}.{ext}"
#: apps/participation/views.py:408
#: apps/participation/views.py:411
#, python-brace-format
msgid "Photo authorizations of team {trigram}.zip"
msgstr "Autorisations de droit à l'image de l'équipe {trigram}.zip"
#: apps/participation/views.py:426
#: apps/participation/views.py:429
msgid "The team is already validated or the validation is pending."
msgstr "La validation de l'équipe est déjà faite ou en cours."
#: apps/participation/views.py:472
#: apps/participation/views.py:475
msgid "The team is not validated yet."
msgstr "L'équipe n'est pas encore validée."
#: apps/participation/views.py:484
#: apps/participation/views.py:487
#, python-brace-format
msgid "Participation of team {trigram}"
msgstr "Participation de l'équipe {trigram}"
#: apps/participation/views.py:573
#: apps/participation/views.py:576
msgid "You can't upload a solution after the deadline."
msgstr "Vous ne pouvez pas envoyer de solution après la date limite."
#: apps/participation/views.py:754
#: apps/participation/views.py:757
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."
@ -1082,7 +1087,7 @@ msgstr "rôle"
msgid "participant"
msgstr "participant"
#: apps/registration/forms.py:24 apps/registration/models.py:247
#: apps/registration/forms.py:24 apps/registration/models.py:253
msgid "coach"
msgstr "encadrant"
@ -1090,11 +1095,11 @@ msgstr "encadrant"
msgid "This email address is already used."
msgstr "Cette adresse e-mail est déjà utilisée."
#: apps/registration/forms.py:55 apps/registration/models.py:273
#: apps/registration/forms.py:55 apps/registration/models.py:279
msgid "volunteer"
msgstr "bénévole"
#: apps/registration/forms.py:56 apps/registration/models.py:292
#: apps/registration/forms.py:56 apps/registration/models.py:298
msgid "admin"
msgstr "admin"
@ -1119,7 +1124,7 @@ msgstr "email confirmé"
msgid "Activate your TFJM² account"
msgstr "Activez votre compte du TFJM²"
#: apps/registration/models.py:99 apps/registration/models.py:313
#: apps/registration/models.py:99 apps/registration/models.py:319
msgid "registration"
msgstr "inscription"
@ -1159,128 +1164,128 @@ msgstr "numéro de téléphone"
msgid "photo authorization"
msgstr "autorisation de droit à l'image"
#: apps/registration/models.py:180
#: apps/registration/models.py:186
msgid "12th grade"
msgstr "Terminale"
#: apps/registration/models.py:181
#: apps/registration/models.py:187
msgid "11th grade"
msgstr "Première"
#: apps/registration/models.py:182
#: apps/registration/models.py:188
msgid "10th grade or lower"
msgstr "Seconde ou inférieur"
#: apps/registration/models.py:184
#: apps/registration/models.py:190
msgid "student class"
msgstr "classe"
#: apps/registration/models.py:189
#: apps/registration/models.py:195
msgid "school"
msgstr "école"
#: apps/registration/models.py:194
#: apps/registration/models.py:200
msgid "responsible name"
msgstr "nom du responsable légal"
#: apps/registration/models.py:199
#: apps/registration/models.py:205
msgid "responsible phone number"
msgstr "numéro de téléphone du responsable légal"
#: apps/registration/models.py:204
#: apps/registration/models.py:210
msgid "responsible email address"
msgstr "adresse e-mail du responsable légal"
#: apps/registration/models.py:209
#: apps/registration/models.py:215
msgid "parental authorization"
msgstr "autorisation parentale"
#: apps/registration/models.py:216
#: apps/registration/models.py:222
msgid "health sheet"
msgstr "fiche sanitaire"
#: apps/registration/models.py:224
#: apps/registration/models.py:230
msgid "student"
msgstr "étudiant"
#: apps/registration/models.py:232
#: apps/registration/models.py:238
msgid "student registration"
msgstr "inscription d'élève"
#: apps/registration/models.py:233
#: apps/registration/models.py:239
msgid "student registrations"
msgstr "inscriptions d'élève"
#: apps/registration/models.py:242 apps/registration/models.py:264
#: apps/registration/models.py:248 apps/registration/models.py:270
msgid "professional activity"
msgstr "activité professionnelle"
#: apps/registration/models.py:255
#: apps/registration/models.py:261
msgid "coach registration"
msgstr "inscription d'encadrant"
#: apps/registration/models.py:256
#: apps/registration/models.py:262
msgid "coach registrations"
msgstr "inscriptions d'encadrants"
#: apps/registration/models.py:287
#: apps/registration/models.py:293
msgid "role of the administrator"
msgstr "rôle de l'administrateur"
#: apps/registration/models.py:300
#: apps/registration/models.py:306
msgid "admin registration"
msgstr "inscription d'administrateur"
#: apps/registration/models.py:301
#: apps/registration/models.py:307
msgid "admin registrations"
msgstr "inscriptions d'administrateur"
#: apps/registration/models.py:317
#: apps/registration/models.py:323
msgid "type"
msgstr "type"
#: apps/registration/models.py:320
#: apps/registration/models.py:326
msgid "No payment"
msgstr "Pas de paiement"
#: apps/registration/models.py:322
#: apps/registration/models.py:328
msgid "Scholarship"
msgstr "Notification de bourse"
#: apps/registration/models.py:323
#: apps/registration/models.py:329
msgid "Bank transfer"
msgstr "Virement bancaire"
#: apps/registration/models.py:324
#: apps/registration/models.py:330
msgid "The tournament is free"
msgstr "Le tournoi est gratuit"
#: apps/registration/models.py:331
#: apps/registration/models.py:337
msgid "scholarship file"
msgstr "Notification de bourse"
#: apps/registration/models.py:332
#: apps/registration/models.py:338
msgid "only if you have a scholarship."
msgstr "Nécessaire seulement si vous déclarez être boursier."
#: apps/registration/models.py:339
#: apps/registration/models.py:345
msgid "additional information"
msgstr "informations additionnelles"
#: apps/registration/models.py:340
#: apps/registration/models.py:346
msgid "To help us to find your payment."
msgstr "Pour nous aider à retrouver votre paiement, si nécessaire."
#: apps/registration/models.py:355
#: apps/registration/models.py:361
#, python-brace-format
msgid "Payment of {registration}"
msgstr "Paiement de {registration}"
#: apps/registration/models.py:358
#: apps/registration/models.py:364
msgid "payment"
msgstr "paiement"
#: apps/registration/models.py:359
#: apps/registration/models.py:365
msgid "payments"
msgstr "paiements"
@ -1390,8 +1395,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."
#: apps/registration/templates/registration/password_reset_complete.html:10
#: tfjm/templates/base.html:127 tfjm/templates/base.html:238
#: tfjm/templates/base.html:239 tfjm/templates/registration/login.html:7
#: tfjm/templates/base.html:127 tfjm/templates/base.html:244
#: tfjm/templates/base.html:245 tfjm/templates/registration/login.html:7
#: tfjm/templates/registration/login.html:8
#: tfjm/templates/registration/login.html:25
msgid "Log in"
@ -1641,18 +1646,18 @@ msgid "Update user"
msgstr "Modifier l'utilisateur"
#: apps/registration/templates/registration/user_detail.html:164
#: apps/registration/views.py:319
#: apps/registration/views.py:313
msgid "Upload photo authorization"
msgstr "Téléverser l'autorisation de droit à l'image"
#: apps/registration/templates/registration/user_detail.html:169
#: apps/registration/views.py:346
#: apps/registration/views.py:334
msgid "Upload health sheet"
msgstr "Téléverser la fiche sanitaire"
#: apps/registration/templates/registration/user_detail.html:174
#: apps/registration/templates/registration/user_detail.html:179
#: apps/registration/views.py:373
#: apps/registration/views.py:355
msgid "Upload parental authorization"
msgstr "Téléverser l'autorisation parentale"
@ -1685,36 +1690,36 @@ msgstr "Renvoyé le lien de validation de l'adresse mail"
msgid "Detail of user {user}"
msgstr "Détails de l'utilisateur {user}"
#: apps/registration/views.py:283
#: apps/registration/views.py:277
#, python-brace-format
msgid "Update user {user}"
msgstr "Mise à jour de l'utilisateur {user}"
#: apps/registration/views.py:483
#: apps/registration/views.py:459
#, python-brace-format
msgid "Photo authorization of {student}.{ext}"
msgstr "Autorisation de droit à l'image de {student}.{ext}"
#: apps/registration/views.py:506
#: apps/registration/views.py:482
#, python-brace-format
msgid "Health sheet of {student}.{ext}"
msgstr "Fiche sanitaire de {student}.{ext}"
#: apps/registration/views.py:529
#: apps/registration/views.py:505
#, python-brace-format
msgid "Parental authorization of {student}.{ext}"
msgstr "Autorisation parentale de {student}.{ext}"
#: apps/registration/views.py:551
#: apps/registration/views.py:527
#, python-brace-format
msgid "Scholarship attestation of {user}.{ext}"
msgstr "Notification de bourse de {user}.{ext}"
#: tfjm/settings.py:162
#: tfjm/settings.py:163
msgid "English"
msgstr "Anglais"
#: tfjm/settings.py:163
#: tfjm/settings.py:164
msgid "French"
msgstr "Français"
@ -1830,15 +1835,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:183
#: tfjm/templates/base.html:189
msgid "Contact us"
msgstr "Nous contacter"
#: tfjm/templates/base.html:202
#: tfjm/templates/base.html:208
msgid "About"
msgstr "À propos"
#: tfjm/templates/base.html:225
#: tfjm/templates/base.html:231
msgid "Search results"
msgstr "Résultats de la recherche"
@ -1874,3 +1879,6 @@ msgstr "Résultats"
#: tfjm/templates/search/search.html:25
msgid "No results found."
msgstr "Aucun résultat."
#~ msgid "The code of the form xxx-xxx-xxx at the end of the BBB link."
#~ msgstr "Le code de la forme xxx-xxx-xxx à la fin du lien BBB."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 49 KiB