mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 15:50:03 +01:00 
			
		
		
		
	Integrate survey results into validation form
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | ||||||
| # SPDX-License-Identifier: GPL-3.0-or-later | # SPDX-License-Identifier: GPL-3.0-or-later | ||||||
|  |  | ||||||
| from wei.models import WEIClub, WEIRegistration | from ...models import WEIClub, WEIRegistration, Bus | ||||||
|  |  | ||||||
|  |  | ||||||
| class WEISurvey: | class WEISurvey: | ||||||
| @@ -34,17 +34,25 @@ class WEISurvey: | |||||||
|     def save(self): |     def save(self): | ||||||
|         self.information.save(self.registration) |         self.information.save(self.registration) | ||||||
|  |  | ||||||
|     def select_bus(self, bus_pk): |     def select_bus(self, bus): | ||||||
|         self.information.selected_bus_pk = bus_pk |         self.information.selected_bus_pk = bus.pk | ||||||
|  |         self.information.selected_bus_name = bus.name | ||||||
|  |         self.information.valid = True | ||||||
|  |  | ||||||
|  |  | ||||||
| class WEISurveyInformation: | class WEISurveyInformation: | ||||||
|     valid = False |     valid = False | ||||||
|     selected_bus_pk = None |     selected_bus_pk = None | ||||||
|  |     selected_bus_name = None | ||||||
|  |  | ||||||
|     def __init__(self, registration): |     def __init__(self, registration): | ||||||
|         self.__dict__.update(registration.information) |         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): |     def save(self, registration): | ||||||
|         registration.information = self.__dict__ |         registration.information = self.__dict__ | ||||||
|         registration.save() |         registration.save() | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ class WEISurveyForm2020(forms.Form): | |||||||
|  |  | ||||||
| class WEISurveyInformation2020(WEISurveyInformation): | class WEISurveyInformation2020(WEISurveyInformation): | ||||||
|     chosen_bus_pk = None |     chosen_bus_pk = None | ||||||
|  |     chosen_bus_name = None | ||||||
|  |  | ||||||
|  |  | ||||||
| class WEISurvey2020(WEISurvey): | class WEISurvey2020(WEISurvey): | ||||||
| @@ -33,7 +34,9 @@ class WEISurvey2020(WEISurvey): | |||||||
|         form.set_registration(self.registration) |         form.set_registration(self.registration) | ||||||
|  |  | ||||||
|     def form_valid(self, form): |     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() |         self.save() | ||||||
|  |  | ||||||
|     @staticmethod |     @staticmethod | ||||||
| @@ -48,5 +51,5 @@ class WEISurveyAlgorithm2020(WEISurveyAlgorithm): | |||||||
|     def run_algorithm(self): |     def run_algorithm(self): | ||||||
|         for registration in self.get_registrations(): |         for registration in self.get_registrations(): | ||||||
|             survey = self.get_survey_class()(registration) |             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() |             survey.save() | ||||||
|   | |||||||
| @@ -380,6 +380,9 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea | |||||||
|  |  | ||||||
|         registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) |         registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) | ||||||
|         context["registration"] = registration |         context["registration"] = registration | ||||||
|  |         survey = CurrentSurvey(registration) | ||||||
|  |         if survey.information.valid: | ||||||
|  |             context["suggested_bus"] = survey.information.get_selected_bus() | ||||||
|         context["club"] = registration.wei |         context["club"] = registration.wei | ||||||
|         context["fee"] = registration.wei.membership_fee_paid if registration.user.profile.paid \ |         context["fee"] = registration.wei.membership_fee_paid if registration.user.profile.paid \ | ||||||
|             else registration.wei.membership_fee_unpaid |             else registration.wei.membership_fee_unpaid | ||||||
| @@ -394,8 +397,12 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Crea | |||||||
|  |  | ||||||
|     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) | ||||||
|         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"] |             del form.fields["roles"] | ||||||
|  |             survey = CurrentSurvey(registration) | ||||||
|  |             if survey.information.valid: | ||||||
|  |                 form.fields["bus"].initial = survey.information.get_selected_bus() | ||||||
|         return form |         return form | ||||||
|  |  | ||||||
|     def form_valid(self, form): |     def form_valid(self, form): | ||||||
|   | |||||||
| @@ -77,7 +77,25 @@ | |||||||
|                 <dt class="col-xl-6">{% trans 'Payment from Société générale' %}</dt> |                 <dt class="col-xl-6">{% trans 'Payment from Société générale' %}</dt> | ||||||
|                 <dd class="col-xl-6">{{ registration.soge_credit|yesno }}</dd> |                 <dd class="col-xl-6">{{ registration.soge_credit|yesno }}</dd> | ||||||
|  |  | ||||||
|                 {% if not registration.first_year %} |                 {% if registration.first_year %} | ||||||
|  |                     <dt class="col-xl-6">{% trans 'Suggested bus from the survey:' %}</dt> | ||||||
|  |                     {% if registration.information.valid or True %} | ||||||
|  |                         <dd class="col-xl-6">{{ suggested_bus }}</dd> | ||||||
|  |  | ||||||
|  |                         <div class="card-header text-center col-xl-12"> | ||||||
|  |                             <h5>{% trans 'Raw survey information' %}</h5> | ||||||
|  |                         </div> | ||||||
|  |  | ||||||
|  |                         {% with information=registration.information %} | ||||||
|  |                         {% for key, value in information.items %} | ||||||
|  |                             <dt class="col-xl-6">{{ key }}</dt> | ||||||
|  |                             <dd class="col-xl-6">{{ value }}</dd> | ||||||
|  |                         {% endfor %} | ||||||
|  |                         {% endwith %} | ||||||
|  |                     {% else %} | ||||||
|  |                         <dd class="col-xl-6"><em>{% trans "The algorithm didn't run." %}</em></dd> | ||||||
|  |                     {% endif %} | ||||||
|  |                 {% else %} | ||||||
|                     <dt class="col-xl-6">{% trans 'caution check given'|capfirst %}</dt> |                     <dt class="col-xl-6">{% trans 'caution check given'|capfirst %}</dt> | ||||||
|                     <dd class="col-xl-6">{{ registration.caution_check|yesno }}</dd> |                     <dd class="col-xl-6">{{ registration.caution_check|yesno }}</dd> | ||||||
|                 {% endif %} |                 {% endif %} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user