mirror of
https://gitlab.crans.org/bde/nk20
synced 2024-11-26 18:37:12 +00:00
Integrate survey results into validation form
This commit is contained in:
parent
69ac5cd291
commit
473d3c3546
@ -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):
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
{% block profile_content %}
|
{% block profile_content %}
|
||||||
<div class="card bg-light shadow">
|
<div class="card bg-light shadow">
|
||||||
<div class="card-header text-center" >
|
<div class="card-header text-center">
|
||||||
<h4>{% trans "Review registration" %}</h4>
|
<h4>{% trans "Review registration" %}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body" id="profile_infos">
|
<div class="card-body" id="profile_infos">
|
||||||
@ -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 %}
|
||||||
|
Loading…
Reference in New Issue
Block a user