mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-12 12:57:28 +02:00
linters
This commit is contained in:
parent
4479e8f97a
commit
02453e07ba
@ -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,))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user