1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-20 17:41:55 +02:00

Integrate survey results into validation form

This commit is contained in:
Yohann D'ANELLO
2020-04-19 22:16:57 +02:00
parent 69ac5cd291
commit 473d3c3546
4 changed files with 44 additions and 8 deletions

View File

@ -1,7 +1,7 @@
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from wei.models import WEIClub, WEIRegistration
from ...models import WEIClub, WEIRegistration, Bus
class WEISurvey:
@ -34,17 +34,25 @@ class WEISurvey:
def save(self):
self.information.save(self.registration)
def select_bus(self, bus_pk):
self.information.selected_bus_pk = bus_pk
def select_bus(self, bus):
self.information.selected_bus_pk = bus.pk
self.information.selected_bus_name = bus.name
self.information.valid = True
class WEISurveyInformation:
valid = False
selected_bus_pk = None
selected_bus_name = None
def __init__(self, registration):
self.__dict__.update(registration.information)
def get_selected_bus(self):
if not self.valid:
return None
return Bus.objects.get(pk=self.selected_bus_pk)
def save(self, registration):
registration.information = self.__dict__
registration.save()

View File

@ -18,6 +18,7 @@ class WEISurveyForm2020(forms.Form):
class WEISurveyInformation2020(WEISurveyInformation):
chosen_bus_pk = None
chosen_bus_name = None
class WEISurvey2020(WEISurvey):
@ -33,7 +34,9 @@ class WEISurvey2020(WEISurvey):
form.set_registration(self.registration)
def form_valid(self, form):
self.information.chosen_bus_pk = form.cleaned_data["bus"].pk
bus = form.cleaned_data["bus"]
self.information.chosen_bus_pk = bus.pk
self.information.chosen_bus_name = bus.name
self.save()
@staticmethod
@ -48,5 +51,5 @@ class WEISurveyAlgorithm2020(WEISurveyAlgorithm):
def run_algorithm(self):
for registration in self.get_registrations():
survey = self.get_survey_class()(registration)
survey.select_bus(survey.information.chosen_bus_pk)
survey.select_bus(Bus.objects.get(pk=survey.information.chosen_bus_pk))
survey.save()

View File

@ -380,6 +380,9 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
registration = WEIRegistration.objects.get(pk=self.kwargs["pk"])
context["registration"] = registration
survey = CurrentSurvey(registration)
if survey.information.valid:
context["suggested_bus"] = survey.information.get_selected_bus()
context["club"] = registration.wei
context["fee"] = registration.wei.membership_fee_paid if registration.user.profile.paid \
else registration.wei.membership_fee_unpaid
@ -394,8 +397,12 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea
def get_form(self, form_class=None):
form = super().get_form(form_class)
if WEIRegistration.objects.get(pk=self.kwargs["pk"]).first_year:
registration = WEIRegistration.objects.get(pk=self.kwargs["pk"])
if registration.first_year:
del form.fields["roles"]
survey = CurrentSurvey(registration)
if survey.information.valid:
form.fields["bus"].initial = survey.information.get_selected_bus()
return form
def form_valid(self, form):