From f690a78e56e903a12d76f67c5faf4661a63fc753 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 6 Jul 2022 18:51:25 +0200 Subject: Preventive file: choose price agreement form --- archaeological_files/views.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'archaeological_files/views.py') diff --git a/archaeological_files/views.py b/archaeological_files/views.py index 3ed24f63b..3e8d37809 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -406,12 +406,51 @@ class MixFormFormsetUpdateView(UpdateView): return data +class PreventiveSimpleEditView(IshtarMixin, LoginRequiredMixin, + UpdateView): + page_name = _("Intervention plan") + form_class = forms.PreventiveFileSimpleForm + template_name = "ishtar/forms/base_form.html" + model = models.File + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + info = ' ' + info += str(_("Changing the price agreement will delete all associated costs")) + context["info"] = info + return context + + def form_valid(self, form): + price_agreement_id = self.object.price_agreement_id + queries = [ + self.object.equipment_costs.exclude( + equipment_service_cost__price_agreement_id=price_agreement_id), + self.object.ground_jobs.exclude( + job__price_agreement_id=price_agreement_id), + self.object.jobs.exclude( + job__price_agreement_id=price_agreement_id) + + ] + for query in queries: + for item in query.all(): + item.delete() + return super().form_valid(form) + + class PreventiveEditView(IshtarMixin, LoginRequiredMixin, MixFormFormsetUpdateView): page_name = _("Intervention plan") form_class = forms.FileFormPreventiveDetail template_name = "ishtar/forms/preventive_detail.html" model = models.File + def get(self, request, *args, **kwargs): + self.object = self.get_object() + if not self.object.price_agreement: + return redirect( + reverse("file-edit-preventive-price", args=[self.object.pk]) + ) + return super(PreventiveEditView, self).get(request, *args, **kwargs) + def get_form_inlines_class(self): inlines = [ forms.PreventiveFileGroundJobFormSet, -- cgit v1.2.3