diff options
Diffstat (limited to 'archaeological_files')
-rw-r--r-- | archaeological_files/forms.py | 11 | ||||
-rw-r--r-- | archaeological_files/urls.py | 7 | ||||
-rw-r--r-- | archaeological_files/views.py | 39 |
3 files changed, 57 insertions, 0 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 46e0aae9c..1958cb2ae 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -669,6 +669,17 @@ class PreventiveFileForm(forms.ModelForm): return super().save(commit=commit) +class PreventiveFileSimpleForm(forms.ModelForm): + price_agreement = forms.ModelChoiceField( + label=_("Price agreement"), + queryset=models.PriceAgreement.objects.filter(available=True) + ) + + class Meta: + model = models.File + fields = ["price_agreement"] + + class PreventiveFileGenJobForm(PreventiveFileForm): def __init__(self, *args, **kwargs): super(PreventiveFileGenJobForm, self).__init__(*args, **kwargs) diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py index dda3ce8e7..942987491 100644 --- a/archaeological_files/urls.py +++ b/archaeological_files/urls.py @@ -138,6 +138,13 @@ urlpatterns = [ name="file-add-operation", ), url( + r'^file/edit-preventive-price/(?P<pk>\d+)/$', + check_rights(["change_file", "change_own_file"])( + views.PreventiveSimpleEditView.as_view() + ), + name="file-edit-preventive-price", + ), + url( r'^file/edit-preventive/(?P<pk>\d+)/$', check_rights(["change_file", "change_own_file"])( views.PreventiveEditView.as_view() 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 = '<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> ' + 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, |