1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-02-22 17:01:18 +00:00

Compare commits

..

No commits in common. "c500a735d84e9bb8bc418fae6e1b0713db272277" and "ab1c5a276a8b6532f2e29d27d284a849f4901bed" have entirely different histories.

9 changed files with 116 additions and 166 deletions

View File

@ -6,7 +6,7 @@
</head>
<body>
<p>
Bonjour,
Bonjour {{ user.registration }},
</p>
<p>

View File

@ -1,4 +1,4 @@
Bonjour {{ user }},
Bonjour {{ user.registration }},
L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
au {{ team.participation.get_problem_display }} du TFJM².

View File

@ -321,12 +321,8 @@ class TestStudentParticipation(TestCase):
A team asked for validation. Try to validate it.
"""
self.team.participation.valid = False
self.team.participation.tournament = self.tournament
self.team.participation.save()
self.tournament.organizers.add(self.superuser.registration)
self.tournament.save()
# No right to do that
resp = self.client.post(reverse("participation:team_detail", args=(self.team.pk,)), data=dict(
_form_type="ValidateParticipationForm",
@ -388,9 +384,6 @@ class TestStudentParticipation(TestCase):
self.coach.registration.team = self.team
self.coach.registration.save()
self.team.participation.tournament = self.tournament
self.team.participation.save()
response = self.client.get(reverse("participation:update_team", args=(self.team.pk,)))
self.assertEqual(response.status_code, 200)

View File

@ -5,7 +5,6 @@ from io import BytesIO
import os
from zipfile import ZipFile
from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.sites.models import Site
from django.core.exceptions import PermissionDenied
@ -21,7 +20,7 @@ from django.views.generic import CreateView, DetailView, FormView, RedirectView,
from django.views.generic.edit import FormMixin, ProcessFormView
from django_tables2 import SingleTableView
from magic import Magic
from registration.models import StudentRegistration
from registration.models import AdminRegistration, StudentRegistration
from tfjm.lists import get_sympa_client
from tfjm.matrix import Matrix
from tfjm.views import AdminMixin, VolunteerMixin
@ -222,21 +221,19 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView)
self.object.participation.valid = False
self.object.participation.save()
mail_context = dict(team=self.object, domain=Site.objects.first().domain)
mail_plain = render_to_string("participation/mails/request_validation.txt", mail_context)
mail_html = render_to_string("participation/mails/request_validation.html", mail_context)
send_mail("[TFJM²] Validation d'équipe", mail_plain, [settings.DEFAULT_FROM_EMAIL],
[self.object.participation.tournament.organizers_email], html_message=mail_html)
for admin in AdminRegistration.objects.all():
mail_context = dict(user=admin.user, team=self.object, domain=Site.objects.first().domain)
mail_plain = render_to_string("participation/mails/request_validation.txt", mail_context)
mail_html = render_to_string("participation/mails/request_validation.html", mail_context)
admin.user.email_user("[TFJM²] Validation d'équipe", mail_plain, html_message=mail_html)
return super().form_valid(form)
def handle_validate_participation(self, form):
"""
An admin validates the team (or not)
"""
if not self.object.participation.tournament \
or self.request.user.registration not in self.object.participation.tournament.organizers.all():
form.add_error(None, _("You are not an organizer of the tournament."))
if not self.request.user.registration.is_admin:
form.add_error(None, _("You are not an administrator."))
return self.form_invalid(form)
elif self.object.participation.valid is not False:
form.add_error(None, _("This team has no pending validation."))

View File

@ -100,7 +100,7 @@ class StudentRegistrationForm(forms.ModelForm):
"""
class Meta:
model = StudentRegistration
fields = ('team', 'student_class', 'birth_date', 'gender', 'address', 'phone_number', 'health_issues',
fields = ('team', 'student_class', 'birth_date', 'gender', 'address', 'phone_number',
'school', 'responsible_name', 'responsible_phone', 'responsible_email',
'give_contact_to_animath', 'email_confirmed',)
@ -177,7 +177,7 @@ class CoachRegistrationForm(forms.ModelForm):
"""
class Meta:
model = CoachRegistration
fields = ('team', 'birth_date', 'gender', 'address', 'phone_number', 'health_issues', 'professional_activity',
fields = ('team', 'birth_date', 'gender', 'address', 'phone_number', 'professional_activity',
'give_contact_to_animath', 'email_confirmed',)

View File

@ -1,18 +0,0 @@
# Generated by Django 3.0.11 on 2021-01-23 20:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('registration', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='participantregistration',
name='health_issues',
field=models.TextField(blank=True, help_text='You can indicate here your allergies or anything that is important to know for organizers', verbose_name='health issues'),
),
]

View File

@ -150,12 +150,6 @@ class ParticipantRegistration(Registration):
blank=True,
)
health_issues = models.TextField(
verbose_name=_("health issues"),
blank=True,
help_text=_("You can indicate here your allergies or anything that is important to know for organizers"),
)
photo_authorization = models.FileField(
verbose_name=_("photo authorization"),
upload_to=get_random_photo_filename,

View File

@ -51,9 +51,6 @@
<dt class="col-sm-6 text-right">{% trans "Phone number:" %}</dt>
<dd class="col-sm-6">{{ user_object.registration.phone_number }}</dd>
<dt class="col-sm-6 text-right">{% trans "Health issues:" %}</dt>
<dd class="col-sm-6">{{ user_object.registration.health_issues|default:any }}</dd>
<dt class="col-sm-6 text-right">{% trans "Photo authorization:" %}</dt>
<dd class="col-sm-6">
{% if user_object.registration.photo_authorization %}

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-23 21:55+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"
@ -100,7 +100,7 @@ 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:314
#: apps/participation/tables.py:44 apps/registration/models.py:358
#: apps/participation/tables.py:44 apps/registration/models.py:352
msgid "valid"
msgstr "valide"
@ -528,9 +528,9 @@ msgstr "Rejoindre"
#: apps/participation/templates/participation/update_team.html:12
#: apps/registration/templates/registration/payment_form.html:49
#: apps/registration/templates/registration/update_user.html:16
#: apps/registration/templates/registration/user_detail.html:153
#: apps/registration/templates/registration/user_detail.html:162
#: apps/registration/templates/registration/user_detail.html:190
#: apps/registration/templates/registration/user_detail.html:150
#: apps/registration/templates/registration/user_detail.html:159
#: apps/registration/templates/registration/user_detail.html:187
msgid "Update"
msgstr "Modifier"
@ -586,10 +586,10 @@ msgstr "Envoyer une solution"
#: apps/registration/templates/registration/upload_health_sheet.html:17
#: apps/registration/templates/registration/upload_parental_authorization.html:17
#: apps/registration/templates/registration/upload_photo_authorization.html:18
#: apps/registration/templates/registration/user_detail.html:168
#: apps/registration/templates/registration/user_detail.html:173
#: apps/registration/templates/registration/user_detail.html:178
#: apps/registration/templates/registration/user_detail.html:183
#: apps/registration/templates/registration/user_detail.html:165
#: apps/registration/templates/registration/user_detail.html:170
#: apps/registration/templates/registration/user_detail.html:175
#: apps/registration/templates/registration/user_detail.html:180
msgid "Upload"
msgstr "Téléverser"
@ -780,16 +780,16 @@ msgstr "Lettre de motivation :"
#: 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:60
#: apps/registration/templates/registration/user_detail.html:73
#: apps/registration/templates/registration/user_detail.html:83
#: apps/registration/templates/registration/user_detail.html:57
#: apps/registration/templates/registration/user_detail.html:70
#: apps/registration/templates/registration/user_detail.html:80
msgid "Download"
msgstr "Télécharger"
#: apps/participation/templates/participation/team_detail.html:99
#: apps/registration/templates/registration/user_detail.html:63
#: apps/registration/templates/registration/user_detail.html:76
#: apps/registration/templates/registration/user_detail.html:86
#: 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"
@ -852,7 +852,7 @@ msgid "Invalidate"
msgstr "Invalider"
#: apps/participation/templates/participation/team_detail.html:169
#: apps/participation/views.py:323
#: apps/participation/views.py:320
msgid "Upload motivation letter"
msgstr "Envoyer la lettre de motivation"
@ -861,7 +861,7 @@ msgid "Update team"
msgstr "Modifier l'équipe"
#: apps/participation/templates/participation/team_detail.html:179
#: apps/participation/views.py:424
#: apps/participation/views.py:421
msgid "Leave team"
msgstr "Quitter l'équipe"
@ -965,49 +965,49 @@ msgstr "Ajouter un tournoi"
msgid "Back to the team detail"
msgstr "Retour aux détails de l'utilisateur"
#: apps/participation/views.py:43 tfjm/templates/base.html:74
#: apps/participation/views.py:42 tfjm/templates/base.html:74
#: tfjm/templates/base.html:239
msgid "Create team"
msgstr "Créer une équipe"
#: apps/participation/views.py:52 apps/participation/views.py:97
#: apps/participation/views.py:51 apps/participation/views.py:96
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."
#: apps/participation/views.py:54 apps/participation/views.py:99
#: apps/participation/views.py:53 apps/participation/views.py:98
msgid "You are already in a team."
msgstr "Vous êtes déjà dans une équipe."
#: apps/participation/views.py:88 tfjm/templates/base.html:79
#: apps/participation/views.py:87 tfjm/templates/base.html:79
#: tfjm/templates/base.html:234
msgid "Join team"
msgstr "Rejoindre une équipe"
#: apps/participation/views.py:150 apps/participation/views.py:430
#: apps/participation/views.py:463
#: 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:151 apps/participation/views.py:464
#: 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."
#: apps/participation/views.py:175
#: apps/participation/views.py:174
#, python-brace-format
msgid "Detail of team {trigram}"
msgstr "Détails de l'équipe {trigram}"
#: apps/participation/views.py:212
#: 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:215
#: 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:218
#: 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."
@ -1016,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:239
msgid "You are not an organizer of the tournament."
msgstr "Vous n'êtes pas un organisateur du tournoi."
#: apps/participation/views.py:236
msgid "You are not an administrator."
msgstr "Vous n'êtes pas administrateur."
#: apps/participation/views.py:242
#: 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:272
#: 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:303
#: apps/participation/views.py:300
#, python-brace-format
msgid "Update team {trigram}"
msgstr "Mise à jour de l'équipe {trigram}"
#: apps/participation/views.py:361 apps/participation/views.py:410
#: 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:391
#: 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:397
#: apps/participation/views.py:394
#, python-brace-format
msgid "Parental authorization of {participant}.{ext}"
msgstr "Autorisation parentale de {participant}.{ext}"
#: apps/participation/views.py:404
#: apps/participation/views.py:401
#, python-brace-format
msgid "Health sheet of {participant}.{ext}"
msgstr "Fiche sanitaire de {participant}.{ext}"
#: apps/participation/views.py:414
#: 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:432
#: 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:478
#: 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:490
#: apps/participation/views.py:487
#, python-brace-format
msgid "Participation of team {trigram}"
msgstr "Participation de l'équipe {trigram}"
#: apps/participation/views.py:579
#: 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:760
#: 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."
@ -1087,7 +1087,7 @@ msgstr "rôle"
msgid "participant"
msgstr "participant"
#: apps/registration/forms.py:24 apps/registration/models.py:259
#: apps/registration/forms.py:24 apps/registration/models.py:253
msgid "coach"
msgstr "encadrant"
@ -1095,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:285
#: 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:304
#: apps/registration/forms.py:56 apps/registration/models.py:298
msgid "admin"
msgstr "admin"
@ -1124,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:325
#: apps/registration/models.py:99 apps/registration/models.py:319
msgid "registration"
msgstr "inscription"
@ -1161,143 +1161,131 @@ msgid "phone number"
msgstr "numéro de téléphone"
#: apps/registration/models.py:154
msgid "health issues"
msgstr "problèmes de santé"
#: apps/registration/models.py:156
msgid ""
"You can indicate here your allergies or anything that is important to know "
"for organizers"
msgstr ""
"Vous pouvez indiquer ici vos allergies ou n'importe quoi qui peut être bon à "
"savoir pour les organisateurs"
#: apps/registration/models.py:160
msgid "photo authorization"
msgstr "autorisation de droit à l'image"
#: apps/registration/models.py:192
#: apps/registration/models.py:186
msgid "12th grade"
msgstr "Terminale"
#: apps/registration/models.py:193
#: apps/registration/models.py:187
msgid "11th grade"
msgstr "Première"
#: apps/registration/models.py:194
#: apps/registration/models.py:188
msgid "10th grade or lower"
msgstr "Seconde ou inférieur"
#: apps/registration/models.py:196
#: apps/registration/models.py:190
msgid "student class"
msgstr "classe"
#: apps/registration/models.py:201
#: apps/registration/models.py:195
msgid "school"
msgstr "école"
#: apps/registration/models.py:206
#: apps/registration/models.py:200
msgid "responsible name"
msgstr "nom du responsable légal"
#: apps/registration/models.py:211
#: apps/registration/models.py:205
msgid "responsible phone number"
msgstr "numéro de téléphone du responsable légal"
#: apps/registration/models.py:216
#: apps/registration/models.py:210
msgid "responsible email address"
msgstr "adresse e-mail du responsable légal"
#: apps/registration/models.py:221
#: apps/registration/models.py:215
msgid "parental authorization"
msgstr "autorisation parentale"
#: apps/registration/models.py:228
#: apps/registration/models.py:222
msgid "health sheet"
msgstr "fiche sanitaire"
#: apps/registration/models.py:236
#: apps/registration/models.py:230
msgid "student"
msgstr "étudiant"
#: apps/registration/models.py:244
#: apps/registration/models.py:238
msgid "student registration"
msgstr "inscription d'élève"
#: apps/registration/models.py:245
#: apps/registration/models.py:239
msgid "student registrations"
msgstr "inscriptions d'élève"
#: apps/registration/models.py:254 apps/registration/models.py:276
#: apps/registration/models.py:248 apps/registration/models.py:270
msgid "professional activity"
msgstr "activité professionnelle"
#: apps/registration/models.py:267
#: apps/registration/models.py:261
msgid "coach registration"
msgstr "inscription d'encadrant"
#: apps/registration/models.py:268
#: apps/registration/models.py:262
msgid "coach registrations"
msgstr "inscriptions d'encadrants"
#: apps/registration/models.py:299
#: apps/registration/models.py:293
msgid "role of the administrator"
msgstr "rôle de l'administrateur"
#: apps/registration/models.py:312
#: apps/registration/models.py:306
msgid "admin registration"
msgstr "inscription d'administrateur"
#: apps/registration/models.py:313
#: apps/registration/models.py:307
msgid "admin registrations"
msgstr "inscriptions d'administrateur"
#: apps/registration/models.py:329
#: apps/registration/models.py:323
msgid "type"
msgstr "type"
#: apps/registration/models.py:332
#: apps/registration/models.py:326
msgid "No payment"
msgstr "Pas de paiement"
#: apps/registration/models.py:334
#: apps/registration/models.py:328
msgid "Scholarship"
msgstr "Notification de bourse"
#: apps/registration/models.py:335
#: apps/registration/models.py:329
msgid "Bank transfer"
msgstr "Virement bancaire"
#: apps/registration/models.py:336
#: apps/registration/models.py:330
msgid "The tournament is free"
msgstr "Le tournoi est gratuit"
#: apps/registration/models.py:343
#: apps/registration/models.py:337
msgid "scholarship file"
msgstr "Notification de bourse"
#: apps/registration/models.py:344
#: 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:351
#: apps/registration/models.py:345
msgid "additional information"
msgstr "informations additionnelles"
#: apps/registration/models.py:352
#: 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:367
#: apps/registration/models.py:361
#, python-brace-format
msgid "Payment of {registration}"
msgstr "Paiement de {registration}"
#: apps/registration/models.py:370
#: apps/registration/models.py:364
msgid "payment"
msgstr "paiement"
#: apps/registration/models.py:371
#: apps/registration/models.py:365
msgid "payments"
msgstr "paiements"
@ -1584,95 +1572,91 @@ msgid "Phone number:"
msgstr "Numéro de téléphone :"
#: apps/registration/templates/registration/user_detail.html:54
msgid "Health issues:"
msgstr "Problèmes de santé :"
#: apps/registration/templates/registration/user_detail.html:57
msgid "Photo authorization:"
msgstr "Autorisation de droit à l'image"
#: apps/registration/templates/registration/user_detail.html:70
#: apps/registration/templates/registration/user_detail.html:67
msgid "Health sheet:"
msgstr "Fiche sanitaire :"
#: apps/registration/templates/registration/user_detail.html:80
#: apps/registration/templates/registration/user_detail.html:77
msgid "Parental authorization:"
msgstr "Autorisation parentale :"
#: apps/registration/templates/registration/user_detail.html:91
#: apps/registration/templates/registration/user_detail.html:88
msgid "Student class:"
msgstr "Classe :"
#: apps/registration/templates/registration/user_detail.html:94
#: apps/registration/templates/registration/user_detail.html:91
msgid "School:"
msgstr "École :"
#: apps/registration/templates/registration/user_detail.html:97
#: apps/registration/templates/registration/user_detail.html:94
msgid "Responsible name:"
msgstr "Nom du responsable légal :"
#: apps/registration/templates/registration/user_detail.html:100
#: apps/registration/templates/registration/user_detail.html:97
msgid "Responsible phone number:"
msgstr "Numéro de téléphone du responsable légal :"
#: apps/registration/templates/registration/user_detail.html:103
#: apps/registration/templates/registration/user_detail.html:100
msgid "Responsible email address:"
msgstr "Adresse e-mail du responsable légal :"
#: apps/registration/templates/registration/user_detail.html:108
#: apps/registration/templates/registration/user_detail.html:105
msgid "Role:"
msgstr "Rôle :"
#: apps/registration/templates/registration/user_detail.html:111
#: apps/registration/templates/registration/user_detail.html:108
msgid "Profesional activity:"
msgstr "Activité professionnelle :"
#: apps/registration/templates/registration/user_detail.html:115
#: apps/registration/templates/registration/user_detail.html:112
msgid "Grant Animath to contact me in the future about other actions:"
msgstr "Autorise Animath à recontacter à propos d'autres actions :"
#: apps/registration/templates/registration/user_detail.html:123
#: apps/registration/templates/registration/user_detail.html:120
msgid "Payment information:"
msgstr "Informations de paiement :"
#: apps/registration/templates/registration/user_detail.html:125
#: apps/registration/templates/registration/user_detail.html:122
msgid "yes,no,pending"
msgstr "oui,non,en attente"
#: apps/registration/templates/registration/user_detail.html:126
#: apps/registration/templates/registration/user_detail.html:129
#: apps/registration/templates/registration/user_detail.html:132
msgid "valid:"
msgstr "valide :"
#: apps/registration/templates/registration/user_detail.html:136
#: apps/registration/templates/registration/user_detail.html:189
#: apps/registration/templates/registration/user_detail.html:133
#: apps/registration/templates/registration/user_detail.html:186
msgid "Update payment"
msgstr "Modifier le paiement"
#: apps/registration/templates/registration/user_detail.html:142
#: apps/registration/templates/registration/user_detail.html:139
msgid "Download scholarship attestation"
msgstr "Télécharger l'attestation de bourse"
#: apps/registration/templates/registration/user_detail.html:155
#: apps/registration/templates/registration/user_detail.html:152
msgid "Impersonate"
msgstr "Impersonifier"
#: apps/registration/templates/registration/user_detail.html:161
#: apps/registration/templates/registration/user_detail.html:158
msgid "Update user"
msgstr "Modifier l'utilisateur"
#: apps/registration/templates/registration/user_detail.html:167
#: apps/registration/templates/registration/user_detail.html:164
#: 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:172
#: apps/registration/templates/registration/user_detail.html:169
#: apps/registration/views.py:334
msgid "Upload health sheet"
msgstr "Téléverser la fiche sanitaire"
#: apps/registration/templates/registration/user_detail.html:177
#: apps/registration/templates/registration/user_detail.html:182
#: apps/registration/templates/registration/user_detail.html:174
#: apps/registration/templates/registration/user_detail.html:179
#: apps/registration/views.py:355
msgid "Upload parental authorization"
msgstr "Téléverser l'autorisation parentale"
@ -1895,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."