mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	linters
This commit is contained in:
		@@ -39,9 +39,11 @@ class WEIRegistrationForm(forms.ModelForm):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
        model = WEIRegistration
 | 
					        model = WEIRegistration
 | 
				
			||||||
        fields = ['user', 'soge_credit', 'birth_date', 'gender', 'clothing_size', 
 | 
					        fields = [
 | 
				
			||||||
                'health_issues', 'emergency_contact_name', 'emergency_contact_phone', 'first_year',
 | 
					            'user', 'soge_credit', 'birth_date', 'gender', 'clothing_size',
 | 
				
			||||||
                'information_json']
 | 
					            'health_issues', 'emergency_contact_name', 'emergency_contact_phone',
 | 
				
			||||||
 | 
					            'first_year', 'information_json', 'caution_check'
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
        widgets = {
 | 
					        widgets = {
 | 
				
			||||||
            "user": Autocomplete(
 | 
					            "user": Autocomplete(
 | 
				
			||||||
                User,
 | 
					                User,
 | 
				
			||||||
@@ -51,8 +53,14 @@ class WEIRegistrationForm(forms.ModelForm):
 | 
				
			|||||||
                    'placeholder': 'Nom ...',
 | 
					                    'placeholder': 'Nom ...',
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
            "birth_date": DatePickerInput(options={'minDate': '1900-01-01',
 | 
					            "birth_date": DatePickerInput(options={
 | 
				
			||||||
                                                'maxDate': '2100-01-01'}),
 | 
					                '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,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@
 | 
				
			|||||||
import os
 | 
					import os
 | 
				
			||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
from datetime import date, timedelta
 | 
					from datetime import date
 | 
				
			||||||
from tempfile import mkdtemp
 | 
					from tempfile import mkdtemp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
@@ -21,7 +21,7 @@ from django.shortcuts import redirect
 | 
				
			|||||||
from django.template.loader import render_to_string
 | 
					from django.template.loader import render_to_string
 | 
				
			||||||
from django.urls import reverse_lazy
 | 
					from django.urls import reverse_lazy
 | 
				
			||||||
from django.views import View
 | 
					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.utils.translation import gettext_lazy as _
 | 
				
			||||||
from django.views.generic.edit import BaseFormView, DeleteView
 | 
					from django.views.generic.edit import BaseFormView, DeleteView
 | 
				
			||||||
from django_tables2 import SingleTableView, MultiTableMixin
 | 
					from django_tables2 import SingleTableView, MultiTableMixin
 | 
				
			||||||
@@ -39,7 +39,6 @@ from .forms import WEIForm, WEIRegistrationForm, BusForm, BusTeamForm, WEIMember
 | 
				
			|||||||
    WEIMembershipForm, CurrentSurvey
 | 
					    WEIMembershipForm, CurrentSurvey
 | 
				
			||||||
from .tables import BusRepartitionTable, BusTable, BusTeamTable, WEITable, WEIRegistrationTable, \
 | 
					from .tables import BusRepartitionTable, BusTable, BusTeamTable, WEITable, WEIRegistrationTable, \
 | 
				
			||||||
    WEIRegistration1ATable, WEIMembershipTable
 | 
					    WEIRegistration1ATable, WEIMembershipTable
 | 
				
			||||||
from .forms.surveys import CurrentSurvey
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CurrentWEIDetailView(LoginRequiredMixin, RedirectView):
 | 
					class CurrentWEIDetailView(LoginRequiredMixin, RedirectView):
 | 
				
			||||||
@@ -443,13 +442,10 @@ class BusTeamCreateView(ProtectQuerysetMixin, ProtectedCreateView):
 | 
				
			|||||||
    def get_success_url(self):
 | 
					    def get_success_url(self):
 | 
				
			||||||
        self.object.refresh_from_db()
 | 
					        self.object.refresh_from_db()
 | 
				
			||||||
        return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk})
 | 
					        return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk})
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    def get_template_names(self):
 | 
					    def get_template_names(self):
 | 
				
			||||||
        names = super().get_template_names()
 | 
					        names = super().get_template_names()
 | 
				
			||||||
        return names
 | 
					        return names
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
 | 
					class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
 | 
				
			||||||
@@ -482,13 +478,10 @@ class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
 | 
				
			|||||||
    def get_success_url(self):
 | 
					    def get_success_url(self):
 | 
				
			||||||
        self.object.refresh_from_db()
 | 
					        self.object.refresh_from_db()
 | 
				
			||||||
        return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk})
 | 
					        return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk})
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    def get_template_names(self):
 | 
					    def get_template_names(self):
 | 
				
			||||||
        names = super().get_template_names()
 | 
					        names = super().get_template_names()
 | 
				
			||||||
        return names
 | 
					        return names
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BusTeamManageView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
 | 
					class BusTeamManageView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
 | 
				
			||||||
@@ -563,7 +556,7 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView):
 | 
				
			|||||||
    def get_form(self, form_class=None):
 | 
					    def get_form(self, form_class=None):
 | 
				
			||||||
        form = super().get_form(form_class)
 | 
					        form = super().get_form(form_class)
 | 
				
			||||||
        form.fields["user"].initial = self.request.user
 | 
					        form.fields["user"].initial = self.request.user
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        # Cacher les champs pendant l'inscription initiale
 | 
					        # Cacher les champs pendant l'inscription initiale
 | 
				
			||||||
        if "first_year" in form.fields:
 | 
					        if "first_year" in form.fields:
 | 
				
			||||||
            del form.fields["first_year"]
 | 
					            del form.fields["first_year"]
 | 
				
			||||||
@@ -571,7 +564,7 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView):
 | 
				
			|||||||
            del form.fields["caution_check"]
 | 
					            del form.fields["caution_check"]
 | 
				
			||||||
        if "information_json" in form.fields:
 | 
					        if "information_json" in form.fields:
 | 
				
			||||||
            del form.fields["information_json"]
 | 
					            del form.fields["information_json"]
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
        return form
 | 
					        return form
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @transaction.atomic
 | 
					    @transaction.atomic
 | 
				
			||||||
@@ -797,22 +790,22 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update
 | 
				
			|||||||
                membership = form.instance.membership
 | 
					                membership = form.instance.membership
 | 
				
			||||||
                if membership is None:
 | 
					                if membership is None:
 | 
				
			||||||
                    raise ValueError(_("No membership found for this registration"))
 | 
					                    raise ValueError(_("No membership found for this registration"))
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                membership_form = self.get_membership_form(self.request.POST, instance=membership)
 | 
					                membership_form = self.get_membership_form(self.request.POST, instance=membership)
 | 
				
			||||||
                if not membership_form.is_valid():
 | 
					                if not membership_form.is_valid():
 | 
				
			||||||
                    return self.form_invalid(form)
 | 
					                    return self.form_invalid(form)
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                # Vérifier que l'utilisateur a la permission de modifier le membership
 | 
					                # 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
 | 
					                # 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"):
 | 
					                if not self.request.user.has_perm("wei.change_weimembership"):
 | 
				
			||||||
                    raise PermissionDenied(_("You don't have the permission to update memberships"))
 | 
					                    raise PermissionDenied(_("You don't have the permission to update memberships"))
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                # On vérifie ensuite les permissions spécifiques pour chaque champ modifié
 | 
					                # On vérifie ensuite les permissions spécifiques pour chaque champ modifié
 | 
				
			||||||
                for field_name in membership_form.changed_data:
 | 
					                for field_name in membership_form.changed_data:
 | 
				
			||||||
                    perm = f"wei.change_weimembership_{field_name}"
 | 
					                    perm = f"wei.change_weimembership_{field_name}"
 | 
				
			||||||
                    if not self.request.user.has_perm(perm):
 | 
					                    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})
 | 
					                        raise PermissionDenied(_("You don't have the permission to update the field %(field)s") % {'field': field_name})
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                membership_form.save()
 | 
					                membership_form.save()
 | 
				
			||||||
            except (WEIMembership.DoesNotExist, ValueError, PermissionDenied) as e:
 | 
					            except (WEIMembership.DoesNotExist, ValueError, PermissionDenied) as e:
 | 
				
			||||||
                form.add_error(None, str(e))
 | 
					                form.add_error(None, str(e))
 | 
				
			||||||
@@ -898,7 +891,7 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def dispatch(self, request, *args, **kwargs):
 | 
					    def dispatch(self, request, *args, **kwargs):
 | 
				
			||||||
        registration = WEIRegistration.objects.get(pk=self.kwargs["pk"])
 | 
					        registration = WEIRegistration.objects.get(pk=self.kwargs["pk"])
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        wei = registration.wei
 | 
					        wei = registration.wei
 | 
				
			||||||
        today = date.today()
 | 
					        today = date.today()
 | 
				
			||||||
        # We can't validate anyone once the WEI is started and before the membership start date
 | 
					        # 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():
 | 
					        if not wei.exists():
 | 
				
			||||||
            raise Http404
 | 
					            raise Http404
 | 
				
			||||||
        wei = wei.get()
 | 
					        wei = wei.get()
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        # On cherche d'abord les 1A qui ont une inscription validée (membership) mais pas de bus
 | 
					        # On cherche d'abord les 1A qui ont une inscription validée (membership) mais pas de bus
 | 
				
			||||||
        qs = WEIRegistration.objects.filter(
 | 
					        qs = WEIRegistration.objects.filter(
 | 
				
			||||||
            wei=wei,
 | 
					            wei=wei,
 | 
				
			||||||
@@ -1355,14 +1348,14 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView):
 | 
				
			|||||||
            membership__isnull=False,
 | 
					            membership__isnull=False,
 | 
				
			||||||
            membership__bus__isnull=True
 | 
					            membership__bus__isnull=True
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        # Parmi eux, on prend ceux qui ont répondu au questionnaire (ont un bus préféré)
 | 
					        # 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')
 | 
					        qs = qs.filter(information_json__contains='selected_bus_pk')
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        if not qs.exists():
 | 
					        if not qs.exists():
 | 
				
			||||||
            # Si on ne trouve personne, on affiche un message et on retourne à la liste
 | 
					            # 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."))
 | 
					            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,))
 | 
					            return reverse_lazy('wei:wei_1A_list', args=(wei.pk,))
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
        # On redirige vers la page d'attribution pour le premier étudiant trouvé
 | 
					        # On redirige vers la page d'attribution pour le premier étudiant trouvé
 | 
				
			||||||
        return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk,))
 | 
					        return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk,))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user