From adb64dec512cb6c1fa165a6aacbffa0c1a46aec1 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sat, 6 Feb 2021 19:34:17 +0100 Subject: [PATCH 1/8] Volunteers can add organizers --- apps/registration/templates/registration/user_list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/registration/templates/registration/user_list.html b/apps/registration/templates/registration/user_list.html index 78f3cbe..179a41b 100644 --- a/apps/registration/templates/registration/user_list.html +++ b/apps/registration/templates/registration/user_list.html @@ -3,7 +3,7 @@ {% load django_tables2 i18n %} {% block content %} - {% if user.registration.is_admin %} + {% if user.registration.is_volunteer %} {% trans "Add organizer" %} From 0d758d2b08b0e7c6a45b72c7560431de3c9807c6 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 15:57:56 +0100 Subject: [PATCH 2/8] Fix subscription of teams in equipes-non-valides@ --- apps/participation/management/commands/fix_sympa_lists.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/participation/management/commands/fix_sympa_lists.py b/apps/participation/management/commands/fix_sympa_lists.py index 404309a..cf59963 100644 --- a/apps/participation/management/commands/fix_sympa_lists.py +++ b/apps/participation/management/commands/fix_sympa_lists.py @@ -56,7 +56,7 @@ class Command(BaseCommand): for team in Team.objects.filter(Q(participation__valid=False) | Q(participation__valid__isnull=True)).all(): team.create_mailing_list() - sympa.subscribe(team.email, "equipes-non-valides", f"Equipe {team.name}", True) + sympa.subscribe(team.email, "equipes-non-valides", True, f"Equipe {team.name}") for participant in ParticipantRegistration.objects.filter(team__isnull=False).all(): sympa.subscribe(participant.user.email, f"equipe-{participant.team.trigram.lower}", True, f"{participant}") From 36d8d993e317e9472fbda088263657b24cd16db1 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 16:08:46 +0100 Subject: [PATCH 3/8] Fix subscribing to equipe-trigram@ --- apps/participation/management/commands/fix_sympa_lists.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/participation/management/commands/fix_sympa_lists.py b/apps/participation/management/commands/fix_sympa_lists.py index cf59963..73abb90 100644 --- a/apps/participation/management/commands/fix_sympa_lists.py +++ b/apps/participation/management/commands/fix_sympa_lists.py @@ -59,7 +59,8 @@ class Command(BaseCommand): sympa.subscribe(team.email, "equipes-non-valides", True, f"Equipe {team.name}") for participant in ParticipantRegistration.objects.filter(team__isnull=False).all(): - sympa.subscribe(participant.user.email, f"equipe-{participant.team.trigram.lower}", True, f"{participant}") + sympa.subscribe(participant.user.email, f"equipe-{participant.team.trigram.lower()}", + True, f"{participant}") for volunteer in VolunteerRegistration.objects.all(): for organized_tournament in volunteer.organized_tournaments.all(): From c32f9d2b170473c42d7d52f578b46176f21a9041 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 16:45:17 +0100 Subject: [PATCH 4/8] People are stupid (or website is not enough documented, idk) --- tfjm/templates/base.html | 8 +------- tfjm/templates/index.html | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/tfjm/templates/base.html b/tfjm/templates/base.html index 85c2744..1c588d4 100644 --- a/tfjm/templates/base.html +++ b/tfjm/templates/base.html @@ -162,13 +162,7 @@ {% endblocktrans %} {% endif %} -
-
- Les inscriptions sont désormais ouvertes ! Si jamais vous aviez essayé de vous inscrire le 22 janvier, - il est possible que votre compte ait été supprimé. Vous pouvez désormais le recréer. Merci pour votre - patience, et bon TFJM² ! :) -
-
+
{% block content %}

Default content...

diff --git a/tfjm/templates/index.html b/tfjm/templates/index.html index 635885d..3d9e588 100644 --- a/tfjm/templates/index.html +++ b/tfjm/templates/index.html @@ -3,6 +3,24 @@ {% block content %}
+
+

+ Certains d'entre vous rencontrent des difficultés lors de l'inscription. Quelques points : +

    +
  • Tout d'abord, il est inutile de créer plusieurs comptes.
  • +
  • Si vous ne recevez pas le mail de validation de l'adresse mail, vous pouvez quand même vous connecter. + Vous pourrez via un lien redemander un mail. Merci de ne pas spammer ce bouton toutefois. Pensez à vérifier + vos spams. Contactez-nous si vous ne recevez toujours rien.
  • +
  • Les différentes autorisations sont à soumettre sur la page de votre compte.
  • +
  • La date limite d'inscription est fixée en général à un mois avant le début du tournoi, soit début mars. + Le site https://tfjm.org/ sera mis à jour dans les jours qui suivent.
  • +
+

+

+ Une documentation plus complète sera disponible dans les jours à venir et régulièrement mise à jour pour apprendre à utiliser la plateforme. +

+
+

From 2b02c250a24c0028a8207131fa6c20d3d1808761 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 16:51:09 +0100 Subject: [PATCH 5/8] Email from is not a list --- apps/participation/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/participation/views.py b/apps/participation/views.py index 2672467..dcb0ae1 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -225,7 +225,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) 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], + send_mail("[TFJM²] Validation d'équipe", mail_plain, settings.DEFAULT_FROM_EMAIL, [self.object.participation.tournament.organizers_email], html_message=mail_html) return super().form_valid(form) From 200848816d7122fd2fc69c8e12522f90772eef2a Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 17:31:50 +0100 Subject: [PATCH 6/8] Admins can (in)validate participations --- apps/participation/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/participation/views.py b/apps/participation/views.py index dcb0ae1..469081c 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -234,8 +234,9 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) """ 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(): + if not self.request.user.user.registration.is_admin and \ + (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.")) return self.form_invalid(form) elif self.object.participation.valid is not False: From c9067d5202e3118b6a770a7661e81c60f6ae2e12 Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 17:39:24 +0100 Subject: [PATCH 7/8] Team trigrams and names are unique --- apps/participation/forms.py | 19 +++- locale/fr/LC_MESSAGES/django.po | 148 +++++++++++++++++--------------- 2 files changed, 92 insertions(+), 75 deletions(-) diff --git a/apps/participation/forms.py b/apps/participation/forms.py index de77aba..44663ea 100644 --- a/apps/participation/forms.py +++ b/apps/participation/forms.py @@ -17,11 +17,22 @@ class TeamForm(forms.ModelForm): """ Form to create a team, with the name and the trigram,... """ + def clean_name(self): + if "name" in self.cleaned_data: + name = self.cleaned_data["name"].upper() + if not self.instance.pk and Team.objects.filter(name=name).exists(): + raise ValidationError(_("This name is already used.")) + return name + def clean_trigram(self): - trigram = self.cleaned_data["trigram"].upper() - if not re.match("[A-Z]{3}", trigram): - raise ValidationError(_("The trigram must be composed of three uppercase letters.")) - return trigram + if "trigram" in self.cleaned_data: + trigram = self.cleaned_data["trigram"].upper() + if not re.match("[A-Z]{3}", trigram): + raise ValidationError(_("The trigram must be composed of three uppercase letters.")) + + if not self.instance.pk and Team.objects.filter(trigram=trigram).exists(): + raise ValidationError(_("This trigram is already used.")) + return trigram class Meta: model = Team diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index fcf26f4..2799919 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: 2021-01-23 21:55+0100\n" +"POT-Creation-Date: 2021-02-07 17:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Yohann D'ANELLO \n" "Language-Team: LANGUAGE \n" @@ -104,51 +104,59 @@ msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}" msgid "valid" msgstr "valide" -#: apps/participation/forms.py:23 apps/participation/models.py:41 +#: apps/participation/forms.py:24 +msgid "This name is already used." +msgstr "Ce nom est déjà utilisé." + +#: apps/participation/forms.py:31 apps/participation/models.py:41 msgid "The trigram must be composed of three uppercase letters." msgstr "Le trigramme doit être composé de trois lettres majuscules." -#: apps/participation/forms.py:38 +#: apps/participation/forms.py:34 +msgid "This trigram is already used." +msgstr "Ce trigramme est déjà utilisé." + +#: apps/participation/forms.py:49 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/forms.py:67 apps/participation/forms.py:202 -#: apps/registration/forms.py:116 apps/registration/forms.py:138 -#: apps/registration/forms.py:160 apps/registration/forms.py:214 +#: apps/participation/forms.py:78 apps/participation/forms.py:213 +#: apps/registration/forms.py:117 apps/registration/forms.py:139 +#: apps/registration/forms.py:161 apps/registration/forms.py:215 msgid "The uploaded file size must be under 2 Mo." msgstr "Le fichier envoyé doit peser moins de 2 Mo." -#: apps/participation/forms.py:69 apps/registration/forms.py:118 -#: apps/registration/forms.py:140 apps/registration/forms.py:162 -#: apps/registration/forms.py:216 +#: apps/participation/forms.py:80 apps/registration/forms.py:119 +#: apps/registration/forms.py:141 apps/registration/forms.py:163 +#: apps/registration/forms.py:217 msgid "The uploaded file must be a PDF, PNG of JPEG file." msgstr "Le fichier envoyé doit être au format PDF, PNG ou JPEG." -#: apps/participation/forms.py:87 +#: apps/participation/forms.py:98 msgid "I engage myself to participate to the whole TFJM²." msgstr "Je m'engage à participer à l'intégralité du TFJM²." -#: apps/participation/forms.py:102 +#: apps/participation/forms.py:113 msgid "Message to address to the team:" msgstr "Message à adresser à l'équipe :" -#: apps/participation/forms.py:139 +#: apps/participation/forms.py:150 msgid "The uploaded file size must be under 5 Mo." msgstr "Le fichier envoyé doit peser moins de 5 Mo." -#: apps/participation/forms.py:141 apps/participation/forms.py:204 +#: apps/participation/forms.py:152 apps/participation/forms.py:215 msgid "The uploaded file must be a PDF file." msgstr "Le fichier envoyé doit être au format PDF." -#: apps/participation/forms.py:145 +#: apps/participation/forms.py:156 msgid "The PDF file must not have more than 30 pages." msgstr "Le fichier PDF ne doit pas avoir plus de 30 pages." -#: apps/participation/forms.py:185 +#: apps/participation/forms.py:196 msgid "The defender, the opponent and the reporter must be different." msgstr "Le défenseur, l'opposant et le rapporteur doivent être différents." -#: apps/participation/forms.py:189 +#: apps/participation/forms.py:200 msgid "This defender did not work on this problem." msgstr "Ce défenseur ne travaille pas sur ce problème." @@ -506,12 +514,12 @@ msgstr "" #: apps/participation/templates/participation/create_team.html:11 #: apps/participation/templates/participation/tournament_form.html:14 -#: tfjm/templates/base.html:240 +#: tfjm/templates/base.html:234 msgid "Create" msgstr "Créer" #: apps/participation/templates/participation/join_team.html:11 -#: tfjm/templates/base.html:235 +#: tfjm/templates/base.html:229 msgid "Join" msgstr "Rejoindre" @@ -529,8 +537,7 @@ msgstr "Rejoindre" #: 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:185 msgid "Update" msgstr "Modifier" @@ -586,10 +593,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:163 #: 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 msgid "Upload" msgstr "Téléverser" @@ -824,8 +831,8 @@ msgid "" "Your team must be composed of 4 members and a coach and each member must " "upload their authorizations and confirm its email address." msgstr "" -"Votre équipe doit être composée d'au moins 4 membres et un encadrant et chaque " -"membre doit envoyer ses autorisations et confirmé son adresse e-mail." +"Votre équipe doit être composée d'au moins 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:146 msgid "This team didn't ask for validation yet." @@ -852,7 +859,7 @@ msgid "Invalidate" msgstr "Invalider" #: apps/participation/templates/participation/team_detail.html:169 -#: apps/participation/views.py:323 +#: apps/participation/views.py:324 msgid "Upload motivation letter" msgstr "Envoyer la lettre de motivation" @@ -861,7 +868,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:425 msgid "Leave team" msgstr "Quitter l'équipe" @@ -870,7 +877,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:228 +#: tfjm/templates/base.html:222 msgid "All teams" msgstr "Toutes les équipes" @@ -953,7 +960,7 @@ msgid "Add pool" msgstr "Ajouter une poule" #: apps/participation/templates/participation/tournament_list.html:6 -#: tfjm/templates/base.html:224 +#: tfjm/templates/base.html:218 msgid "All tournaments" msgstr "Tous les tournois" @@ -966,7 +973,7 @@ msgid "Back to the team detail" msgstr "Retour aux détails de l'utilisateur" #: apps/participation/views.py:43 tfjm/templates/base.html:74 -#: tfjm/templates/base.html:239 +#: tfjm/templates/base.html:233 msgid "Create team" msgstr "Créer une équipe" @@ -979,16 +986,16 @@ 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 -#: tfjm/templates/base.html:234 +#: tfjm/templates/base.html:228 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:150 apps/participation/views.py:431 +#: apps/participation/views.py:464 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:151 apps/participation/views.py:465 msgid "You don't participate, so you don't have any team." msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe." @@ -1016,98 +1023,98 @@ 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 +#: apps/participation/views.py:240 msgid "You are not an organizer of the tournament." msgstr "Vous n'êtes pas un organisateur du tournoi." -#: apps/participation/views.py:242 +#: apps/participation/views.py:243 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:273 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:304 #, 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:362 apps/participation/views.py:411 #, 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:392 #, 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:398 #, python-brace-format msgid "Parental authorization of {participant}.{ext}" msgstr "Autorisation parentale de {participant}.{ext}" -#: apps/participation/views.py:404 +#: apps/participation/views.py:405 #, python-brace-format msgid "Health sheet of {participant}.{ext}" msgstr "Fiche sanitaire de {participant}.{ext}" -#: apps/participation/views.py:414 +#: apps/participation/views.py:415 #, 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:433 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:479 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:491 #, python-brace-format msgid "Participation of team {trigram}" msgstr "Participation de l'équipe {trigram}" -#: apps/participation/views.py:579 +#: apps/participation/views.py:580 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:761 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." -#: apps/registration/forms.py:21 apps/registration/forms.py:53 +#: apps/registration/forms.py:22 apps/registration/forms.py:54 msgid "role" msgstr "rôle" -#: apps/registration/forms.py:23 +#: apps/registration/forms.py:24 msgid "participant" msgstr "participant" -#: apps/registration/forms.py:24 apps/registration/models.py:259 +#: apps/registration/forms.py:25 apps/registration/models.py:259 msgid "coach" msgstr "encadrant" -#: apps/registration/forms.py:34 apps/registration/forms.py:67 +#: apps/registration/forms.py:35 apps/registration/forms.py:68 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:56 apps/registration/models.py:285 msgid "volunteer" msgstr "bénévole" -#: apps/registration/forms.py:56 apps/registration/models.py:304 +#: apps/registration/forms.py:57 apps/registration/models.py:304 msgid "admin" msgstr "admin" -#: apps/registration/forms.py:208 +#: apps/registration/forms.py:209 msgid "Pending" msgstr "En attente" -#: apps/registration/forms.py:224 +#: apps/registration/forms.py:225 msgid "You must upload your scholarship attestation." msgstr "Vous devez envoyer votre attestation de bourse." @@ -1407,8 +1414,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:244 -#: tfjm/templates/base.html:245 tfjm/templates/registration/login.html:7 +#: tfjm/templates/base.html:127 tfjm/templates/base.html:238 +#: tfjm/templates/base.html:239 tfjm/templates/registration/login.html:7 #: tfjm/templates/registration/login.html:8 #: tfjm/templates/registration/login.html:25 msgid "Log in" @@ -1645,7 +1652,7 @@ 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:184 msgid "Update payment" msgstr "Modifier le paiement" @@ -1657,22 +1664,18 @@ msgstr "Télécharger l'attestation de bourse" msgid "Impersonate" msgstr "Impersonifier" -#: apps/registration/templates/registration/user_detail.html:161 -msgid "Update user" -msgstr "Modifier l'utilisateur" - -#: apps/registration/templates/registration/user_detail.html:167 +#: apps/registration/templates/registration/user_detail.html:162 #: 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:167 #: apps/registration/views.py:334 msgid "Upload health sheet" msgstr "Téléverser la fiche sanitaire" +#: apps/registration/templates/registration/user_detail.html:172 #: apps/registration/templates/registration/user_detail.html:177 -#: apps/registration/templates/registration/user_detail.html:182 #: apps/registration/views.py:355 msgid "Upload parental authorization" msgstr "Téléverser l'autorisation parentale" @@ -1711,22 +1714,22 @@ msgstr "Détails de l'utilisateur {user}" msgid "Update user {user}" msgstr "Mise à jour de l'utilisateur {user}" -#: apps/registration/views.py:459 +#: apps/registration/views.py:461 #, python-brace-format msgid "Photo authorization of {student}.{ext}" msgstr "Autorisation de droit à l'image de {student}.{ext}" -#: apps/registration/views.py:482 +#: apps/registration/views.py:484 #, python-brace-format msgid "Health sheet of {student}.{ext}" msgstr "Fiche sanitaire de {student}.{ext}" -#: apps/registration/views.py:505 +#: apps/registration/views.py:507 #, python-brace-format msgid "Parental authorization of {student}.{ext}" msgstr "Autorisation parentale de {student}.{ext}" -#: apps/registration/views.py:527 +#: apps/registration/views.py:529 #, python-brace-format msgid "Scholarship attestation of {user}.{ext}" msgstr "Notification de bourse de {user}.{ext}" @@ -1851,15 +1854,15 @@ msgstr "" "avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur ce lien." -#: tfjm/templates/base.html:189 +#: tfjm/templates/base.html:183 msgid "Contact us" msgstr "Nous contacter" -#: tfjm/templates/base.html:208 +#: tfjm/templates/base.html:202 msgid "About" msgstr "À propos" -#: tfjm/templates/base.html:231 +#: tfjm/templates/base.html:225 msgid "Search results" msgstr "Résultats de la recherche" @@ -1895,3 +1898,6 @@ msgstr "Résultats" #: tfjm/templates/search/search.html:25 msgid "No results found." msgstr "Aucun résultat." + +#~ msgid "Update user" +#~ msgstr "Modifier l'utilisateur" From 7a0cb64fb6016e73a4c7f408fbbe7110f1d8fffe Mon Sep 17 00:00:00 2001 From: ynerant Date: Sun, 7 Feb 2021 17:40:29 +0100 Subject: [PATCH 8/8] Fix team validation --- apps/participation/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/participation/views.py b/apps/participation/views.py index 469081c..7362839 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -234,7 +234,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) """ An admin validates the team (or not) """ - if not self.request.user.user.registration.is_admin and \ + if not self.request.user.registration.is_admin and \ (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."))