From 02453e07ba9c02e9e97e33e3ce60730d74c39819 Mon Sep 17 00:00:00 2001 From: Ehouarn Date: Wed, 28 May 2025 16:31:03 +0200 Subject: [PATCH] linters --- apps/wei/forms/registration.py | 18 ++++++++++++----- apps/wei/views.py | 37 ++++++++++++++-------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/apps/wei/forms/registration.py b/apps/wei/forms/registration.py index fb497730..0dba2db9 100644 --- a/apps/wei/forms/registration.py +++ b/apps/wei/forms/registration.py @@ -39,9 +39,11 @@ class WEIRegistrationForm(forms.ModelForm): class Meta: model = WEIRegistration - fields = ['user', 'soge_credit', 'birth_date', 'gender', 'clothing_size', - 'health_issues', 'emergency_contact_name', 'emergency_contact_phone', 'first_year', - 'information_json'] + fields = [ + 'user', 'soge_credit', 'birth_date', 'gender', 'clothing_size', + 'health_issues', 'emergency_contact_name', 'emergency_contact_phone', + 'first_year', 'information_json', 'caution_check' + ] widgets = { "user": Autocomplete( User, @@ -51,8 +53,14 @@ class WEIRegistrationForm(forms.ModelForm): 'placeholder': 'Nom ...', }, ), - "birth_date": DatePickerInput(options={'minDate': '1900-01-01', - 'maxDate': '2100-01-01'}), + "birth_date": DatePickerInput(options={ + 'minDate': '1900-01-01', + 'maxDate': '2100-01-01' + }), + "caution_check": forms.BooleanField( + label=_("I confirm that I have read the caution and that I am aware of the risks involved."), + required=False, + ), } diff --git a/apps/wei/views.py b/apps/wei/views.py index bfd9dc4d..67d4eee7 100644 --- a/apps/wei/views.py +++ b/apps/wei/views.py @@ -4,7 +4,7 @@ import os import shutil import subprocess -from datetime import date, timedelta +from datetime import date from tempfile import mkdtemp from django.conf import settings @@ -21,7 +21,7 @@ from django.shortcuts import redirect from django.template.loader import render_to_string from django.urls import reverse_lazy from django.views import View -from django.views.generic import DetailView, UpdateView, RedirectView, TemplateView, CreateView +from django.views.generic import DetailView, UpdateView, RedirectView, TemplateView from django.utils.translation import gettext_lazy as _ from django.views.generic.edit import BaseFormView, DeleteView from django_tables2 import SingleTableView, MultiTableMixin @@ -39,7 +39,6 @@ from .forms import WEIForm, WEIRegistrationForm, BusForm, BusTeamForm, WEIMember WEIMembershipForm, CurrentSurvey from .tables import BusRepartitionTable, BusTable, BusTeamTable, WEITable, WEIRegistrationTable, \ WEIRegistration1ATable, WEIMembershipTable -from .forms.surveys import CurrentSurvey class CurrentWEIDetailView(LoginRequiredMixin, RedirectView): @@ -443,13 +442,10 @@ class BusTeamCreateView(ProtectQuerysetMixin, ProtectedCreateView): def get_success_url(self): self.object.refresh_from_db() return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk}) - + def get_template_names(self): names = super().get_template_names() return names - - - class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView): @@ -482,13 +478,10 @@ class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView): def get_success_url(self): self.object.refresh_from_db() return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk}) - + def get_template_names(self): names = super().get_template_names() return names - - - class BusTeamManageView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): @@ -563,7 +556,7 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView): def get_form(self, form_class=None): form = super().get_form(form_class) form.fields["user"].initial = self.request.user - + # Cacher les champs pendant l'inscription initiale if "first_year" in form.fields: del form.fields["first_year"] @@ -571,7 +564,7 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView): del form.fields["caution_check"] if "information_json" in form.fields: del form.fields["information_json"] - + return form @transaction.atomic @@ -797,22 +790,22 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update membership = form.instance.membership if membership is None: raise ValueError(_("No membership found for this registration")) - + membership_form = self.get_membership_form(self.request.POST, instance=membership) if not membership_form.is_valid(): return self.form_invalid(form) - + # Vérifier que l'utilisateur a la permission de modifier le membership # On vérifie d'abord si l'utilisateur a la permission générale de modification if not self.request.user.has_perm("wei.change_weimembership"): raise PermissionDenied(_("You don't have the permission to update memberships")) - + # On vérifie ensuite les permissions spécifiques pour chaque champ modifié for field_name in membership_form.changed_data: perm = f"wei.change_weimembership_{field_name}" if not self.request.user.has_perm(perm): raise PermissionDenied(_("You don't have the permission to update the field %(field)s") % {'field': field_name}) - + membership_form.save() except (WEIMembership.DoesNotExist, ValueError, PermissionDenied) as e: form.add_error(None, str(e)) @@ -898,7 +891,7 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): def dispatch(self, request, *args, **kwargs): registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) - + wei = registration.wei today = date.today() # We can't validate anyone once the WEI is started and before the membership start date @@ -1347,7 +1340,7 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView): if not wei.exists(): raise Http404 wei = wei.get() - + # On cherche d'abord les 1A qui ont une inscription validée (membership) mais pas de bus qs = WEIRegistration.objects.filter( wei=wei, @@ -1355,14 +1348,14 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView): membership__isnull=False, membership__bus__isnull=True ) - + # Parmi eux, on prend ceux qui ont répondu au questionnaire (ont un bus préféré) qs = qs.filter(information_json__contains='selected_bus_pk') - + if not qs.exists(): # Si on ne trouve personne, on affiche un message et on retourne à la liste messages.info(self.request, _("No first year student without a bus found. Either all of them have a bus, or none has filled the survey yet.")) return reverse_lazy('wei:wei_1A_list', args=(wei.pk,)) - + # On redirige vers la page d'attribution pour le premier étudiant trouvé return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk,))