diff --git a/apps/participation/models.py b/apps/participation/models.py
index 3b795d3..a251885 100644
--- a/apps/participation/models.py
+++ b/apps/participation/models.py
@@ -80,6 +80,13 @@ class Participation(models.Model):
verbose_name=_("problem number"),
)
+ valid = models.BooleanField(
+ null=True,
+ default=None,
+ verbose_name=_("valid"),
+ help_text=_("The video got the validation of the administrators."),
+ )
+
solution = models.OneToOneField(
"participation.Video",
on_delete=models.SET_NULL,
diff --git a/apps/participation/templates/participation/team_detail.html b/apps/participation/templates/participation/team_detail.html
index 67ef64c..018fcb2 100644
--- a/apps/participation/templates/participation/team_detail.html
+++ b/apps/participation/templates/participation/team_detail.html
@@ -61,13 +61,17 @@
-
+ {% if team.participation.valid %}
+
-
+
+ {% else %}
+ {# TODO Validate team #}
+ {% endif %}
{% trans "Update team" as modal_title %}
{% trans "Update" as modal_button %}
diff --git a/apps/participation/views.py b/apps/participation/views.py
index 0b26e9f..22d72c4 100644
--- a/apps/participation/views.py
+++ b/apps/participation/views.py
@@ -170,6 +170,8 @@ class ParticipationDetailView(LoginRequiredMixin, DetailView):
def dispatch(self, request, *args, **kwargs):
user = request.user
+ if not self.get_object().valid:
+ raise PermissionDenied(_("The team is not validated yet."))
if user.registration.is_admin or user.registration.participates\
and user.registration.team.participation.pk == kwargs["pk"]:
return super().dispatch(request, *args, **kwargs)
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 301c6e2..44e0ee3 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Corres2math\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-09-27 18:00+0200\n"
+"POT-Creation-Date: 2020-10-11 15:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yohann D'ANELLO \n"
"Language-Team: LANGUAGE \n"
@@ -99,7 +99,7 @@ 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/forms.py:14 apps/participation/models.py:22
+#: apps/participation/forms.py:14 apps/participation/models.py:23
msgid "The trigram must be composed of three uppercase letters."
msgstr "Le trigramme doit être composé de trois lettres majuscules."
@@ -107,27 +107,27 @@ msgstr "Le trigramme doit être composé de trois lettres majuscules."
msgid "No team was found with this access code."
msgstr "Aucune équipe n'a été trouvée avec ce code d'accès."
-#: apps/participation/models.py:15
+#: apps/participation/models.py:16
msgid "name"
msgstr "nom"
-#: apps/participation/models.py:21
+#: apps/participation/models.py:22
msgid "trigram"
msgstr "trigramme"
-#: apps/participation/models.py:29
+#: apps/participation/models.py:30
msgid "access code"
msgstr "code d'accès"
-#: apps/participation/models.py:30
+#: apps/participation/models.py:31
msgid "The access code let other people to join the team."
msgstr "Le code d'accès permet aux autres participants de rejoindre l'équipe."
-#: apps/participation/models.py:34
+#: apps/participation/models.py:35
msgid "Grant Animath to publish my video"
msgstr "Autoriser Animath à publier ma vidéo"
-#: apps/participation/models.py:35
+#: apps/participation/models.py:36
msgid ""
"Give the authorisation to publish the video on the main website to promote "
"the action."
@@ -135,80 +135,80 @@ msgstr ""
"Donner l'autorisation de publier la vidéo sur le site principal pour "
"promouvoir les Correspondances."
-#: apps/participation/models.py:45
+#: apps/participation/models.py:59
#, python-brace-format
msgid "Team {name} ({trigram})"
msgstr "Équipe {name} ({trigram})"
-#: apps/participation/models.py:48 apps/participation/models.py:59
-#: apps/registration/models.py:85 apps/registration/models.py:131
+#: apps/participation/models.py:62 apps/participation/models.py:73
+#: apps/registration/models.py:85 apps/registration/models.py:130
msgid "team"
msgstr "équipe"
-#: apps/participation/models.py:49
+#: apps/participation/models.py:63
msgid "teams"
msgstr "équipes"
-#: apps/participation/models.py:63
+#: apps/participation/models.py:77
#, python-brace-format
msgid "Problem #{problem:d}"
msgstr "Problème n°{problem:d}"
-#: apps/participation/models.py:66
+#: apps/participation/models.py:80
msgid "problem number"
msgstr "numéro de problème"
-#: apps/participation/models.py:75
+#: apps/participation/models.py:86 apps/participation/models.py:134
+msgid "valid"
+msgstr "valide"
+
+#: apps/participation/models.py:87 apps/participation/models.py:135
+msgid "The video got the validation of the administrators."
+msgstr "La vidéo a été validée par les administrateurs."
+
+#: apps/participation/models.py:96
msgid "solution video"
msgstr "vidéo de solution"
-#: apps/participation/models.py:84
+#: apps/participation/models.py:105
msgid "received participation"
msgstr "participation reçue"
-#: apps/participation/models.py:93
+#: apps/participation/models.py:114
msgid "synthesis video"
msgstr "vidéo de synthèse"
-#: apps/participation/models.py:97
+#: apps/participation/models.py:118
#, python-brace-format
msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})"
-#: apps/participation/models.py:100
+#: apps/participation/models.py:121
msgid "participation"
msgstr "participation"
-#: apps/participation/models.py:101
+#: apps/participation/models.py:122
msgid "participations"
msgstr "participations"
-#: apps/participation/models.py:106
+#: apps/participation/models.py:127
msgid "link"
msgstr "lien"
-#: apps/participation/models.py:107
+#: apps/participation/models.py:128
msgid "The full video link."
msgstr "Le lien complet de la vidéo."
-#: apps/participation/models.py:113
-msgid "valid"
-msgstr "valide"
-
-#: apps/participation/models.py:114
-msgid "The video got the validation of the administrators."
-msgstr "La vidéo a été validée par les administrateurs."
-
-#: apps/participation/models.py:136
+#: apps/participation/models.py:157
#, python-brace-format
msgid "Video of team {name} ({trigram})"
msgstr "Vidéo de l'équipe {name} ({trigram})"
-#: apps/participation/models.py:140
+#: apps/participation/models.py:161
msgid "video"
msgstr "vidéo"
-#: apps/participation/models.py:141
+#: apps/participation/models.py:162
msgid "videos"
msgstr "vidéos"
@@ -223,7 +223,9 @@ msgid "Join"
msgstr "Rejoindre"
#: apps/participation/templates/participation/participation_detail.html:6
-#: apps/participation/templates/participation/team_detail.html:6
+#: apps/participation/templates/participation/team_detail.html:27
+#: apps/participation/templates/participation/team_detail.html:36
+#: apps/participation/templates/participation/team_detail.html:41
#: apps/registration/templates/registration/user_detail.html:6
#: apps/registration/templates/registration/user_detail.html:26
msgid "any"
@@ -239,7 +241,7 @@ msgid "Team:"
msgstr "Équipe :"
#: apps/participation/templates/participation/participation_detail.html:16
-#: apps/participation/templates/participation/team_detail.html:29
+#: apps/participation/templates/participation/team_detail.html:40
msgid "Chosen problem:"
msgstr "Problème choisi :"
@@ -267,40 +269,40 @@ msgstr "La plateforme de cette vidéo n'est pas encore supportée."
msgid "Upload video"
msgstr "Envoyer la vidéo"
-#: apps/participation/templates/participation/team_detail.html:14
+#: apps/participation/templates/participation/team_detail.html:13
msgid "Name:"
msgstr "Nom :"
-#: apps/participation/templates/participation/team_detail.html:17
+#: apps/participation/templates/participation/team_detail.html:16
msgid "Trigram:"
msgstr "Trigramme :"
-#: apps/participation/templates/participation/team_detail.html:20
+#: apps/participation/templates/participation/team_detail.html:19
msgid "Access code:"
msgstr "Code d'accès :"
-#: apps/participation/templates/participation/team_detail.html:23
+#: apps/participation/templates/participation/team_detail.html:22
msgid "Coachs:"
msgstr "Encadrants :"
-#: apps/participation/templates/participation/team_detail.html:26
+#: apps/participation/templates/participation/team_detail.html:31
msgid "Participants:"
msgstr "Participants :"
-#: apps/participation/templates/participation/team_detail.html:32
+#: apps/participation/templates/participation/team_detail.html:44
msgid "Grant Animath to publish our video:"
msgstr "Autoriser Animath à publier notre vidéo :"
-#: apps/participation/templates/participation/team_detail.html:35
+#: apps/participation/templates/participation/team_detail.html:47
msgid "Authorizations:"
msgstr "Autorisations :"
-#: apps/participation/templates/participation/team_detail.html:41
+#: apps/participation/templates/participation/team_detail.html:53
msgid "Not uploaded yet"
msgstr "Pas encore envoyée"
-#: apps/participation/templates/participation/team_detail.html:48
-#: apps/participation/templates/participation/team_detail.html:61
+#: apps/participation/templates/participation/team_detail.html:60
+#: apps/participation/templates/participation/team_detail.html:73
#: apps/participation/templates/participation/update_team.html:12
#: apps/registration/templates/registration/update_user.html:12
#: apps/registration/templates/registration/user_detail.html:64
@@ -308,40 +310,55 @@ msgstr "Pas encore envoyée"
msgid "Update"
msgstr "Modifier"
-#: apps/participation/templates/participation/team_detail.html:56
+#: apps/participation/templates/participation/team_detail.html:68
msgid "Access to team participation"
msgstr "Accéder à la participation de l'équipe"
-#: apps/participation/templates/participation/team_detail.html:60
+#: apps/participation/templates/participation/team_detail.html:72
msgid "Update team"
msgstr "Modifier l'équipe"
-#: apps/participation/views.py:15 templates/base.html:70
+#: apps/participation/views.py:21 templates/base.html:70
#: templates/base.html:206
msgid "Create team"
msgstr "Créer une équipe"
-#: apps/participation/views.py:22 apps/participation/views.py:50
+#: apps/participation/views.py:28 apps/participation/views.py:58
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:24 apps/participation/views.py:52
+#: apps/participation/views.py:30 apps/participation/views.py:60
msgid "You are already in a team."
msgstr "Vous êtes déjà dans une équipe."
-#: apps/participation/views.py:43 templates/base.html:75
+#: apps/participation/views.py:51 templates/base.html:75
#: templates/base.html:202
msgid "Join team"
msgstr "Rejoindre une équipe"
-#: apps/participation/views.py:76 apps/participation/views.py:127
+#: apps/participation/views.py:86 apps/participation/views.py:164
msgid "You are not in a team."
msgstr "Vous n'êtes pas dans une équipe."
-#: apps/participation/views.py:77 apps/participation/views.py:128
+#: apps/participation/views.py:87 apps/participation/views.py:165
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:148 apps/registration/views.py:213
+#, python-brace-format
+msgid "Photo authorization of {student}.{ext}"
+msgstr "Autorisation de droit à l'image de {student}.{ext}"
+
+#: apps/participation/views.py:152
+#, fuzzy, python-brace-format
+#| msgid "Photo authorization of {student}.{ext}"
+msgid "Photo authorizations of team {trigram}.zip"
+msgstr "Autorisation de droit à l'image de {student}.{ext}"
+
+#: apps/participation/views.py:174
+msgid "The team is not validated yet."
+msgstr "L'équipe n'est pas encore validée."
+
#: apps/registration/forms.py:13
msgid "role"
msgstr "rôle"
@@ -350,7 +367,7 @@ msgstr "rôle"
msgid "participant"
msgstr "participant"
-#: apps/registration/forms.py:16 apps/registration/models.py:140
+#: apps/registration/forms.py:16 apps/registration/models.py:139
msgid "coach"
msgstr "encadrant"
@@ -399,47 +416,47 @@ msgstr "classe"
msgid "school"
msgstr "école"
-#: apps/registration/models.py:104
+#: apps/registration/models.py:103
msgid "photo authorization"
msgstr "autorisation de droit à l'image"
-#: apps/registration/models.py:112
+#: apps/registration/models.py:111
msgid "student"
msgstr "étudiant"
-#: apps/registration/models.py:120
+#: apps/registration/models.py:119
msgid "student registration"
msgstr "inscription d'élève"
-#: apps/registration/models.py:121
+#: apps/registration/models.py:120
msgid "student registrations"
msgstr "inscriptions d'élève"
-#: apps/registration/models.py:135
+#: apps/registration/models.py:134
msgid "professional activity"
msgstr "activité professionnelle"
-#: apps/registration/models.py:148
+#: apps/registration/models.py:147
msgid "coach registration"
msgstr "inscription d'encadrant"
-#: apps/registration/models.py:149
+#: apps/registration/models.py:148
msgid "coach registrations"
msgstr "inscriptions d'encadrants"
-#: apps/registration/models.py:154
+#: apps/registration/models.py:153
msgid "role of the administrator"
msgstr "rôle de l'administrateur"
-#: apps/registration/models.py:159
+#: apps/registration/models.py:158
msgid "admin"
msgstr "admin"
-#: apps/registration/models.py:167
+#: apps/registration/models.py:166
msgid "admin registration"
msgstr "inscription d'administrateur"
-#: apps/registration/models.py:168
+#: apps/registration/models.py:167
msgid "admin registrations"
msgstr "inscriptions d'administrateur"
@@ -690,11 +707,6 @@ msgstr "Mail de confirmation de l'adresse mail envoyé"
msgid "Resend email validation link"
msgstr "Renvoyé le lien de validation de l'adresse mail"
-#: apps/registration/views.py:213
-#, python-brace-format
-msgid "Photo authorization of {student}.{ext}"
-msgstr "Autorisation de droit à l'image de {student}.{ext}"
-
#: corres2math/settings.py:150
msgid "English"
msgstr "Anglais"