|
58 | 58 | ] |
59 | 59 |
|
60 | 60 |
|
61 | | -def _show_add_choose_approval_form(wizard): |
62 | | - cleaned_data = wizard.get_cleaned_data_for_step("choose-employee") or {} |
63 | | - return bool(cleaned_data.get("employee")) |
64 | | - |
65 | | - |
66 | 61 | class AddView(NamedUrlSessionWizardView): |
67 | 62 | template_name = "employee_record/add.html" |
68 | 63 | form_list = [ |
69 | 64 | ("choose-employee", AddEmployeeRecordChooseEmployeeForm), |
70 | 65 | ("choose-approval", AddEmployeeRecordChooseApprovalForm), |
71 | 66 | ] |
72 | | - condition_dict = { |
73 | | - "choose-approval": _show_add_choose_approval_form, |
74 | | - } |
75 | 67 |
|
76 | 68 | def dispatch(self, request, *args, **kwargs): |
77 | 69 | self.company = get_current_company_or_404(request) |
@@ -105,6 +97,22 @@ def get_prefix(self, request, *args, **kwargs): |
105 | 97 | """ |
106 | 98 | return f"company_{self.company.pk}_add_employee_record" |
107 | 99 |
|
| 100 | + def check_wizard_state(self, *args, **kwargs): |
| 101 | + step_url = kwargs.get("step", None) |
| 102 | + if step_url == self.steps.last and self.steps.current == self.steps.first: |
| 103 | + # The user tried to go back the the last step after finishing the wizard. |
| 104 | + return HttpResponseRedirect(reverse("employee_record_views:add", kwargs={"step": "choose-employee"})) |
| 105 | + |
| 106 | + def get(self, *args, **kwargs): |
| 107 | + if check_response := self.check_wizard_state(*args, **kwargs): |
| 108 | + return check_response |
| 109 | + return super().get(*args, **kwargs) |
| 110 | + |
| 111 | + def post(self, *args, **kwargs): |
| 112 | + if check_response := self.check_wizard_state(*args, **kwargs): |
| 113 | + return check_response |
| 114 | + return super().post(*args, **kwargs) |
| 115 | + |
108 | 116 | def done(self, form_list, *args, **kwargs): |
109 | 117 | approval = Approval.objects.get( |
110 | 118 | pk=self.get_all_cleaned_data()["approval"], user=self.get_all_cleaned_data()["employee"] |
|
0 commit comments