diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-06 18:51:25 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-08 09:59:31 +0200 |
commit | 013db4c21bf74a75f087e8d7ca8f6a334c3f3cba (patch) | |
tree | 0a2a1e81db0503c6b90e8a2279f92d93d2b642d4 | |
parent | b9c259a2cadd9717cb6854ac4931a87d6becc938 (diff) | |
download | Ishtar-013db4c21bf74a75f087e8d7ca8f6a334c3f3cba.tar.bz2 Ishtar-013db4c21bf74a75f087e8d7ca8f6a334c3f3cba.zip |
Preventive file: choose price agreement form
-rw-r--r-- | archaeological_files/forms.py | 11 | ||||
-rw-r--r-- | archaeological_files/urls.py | 7 | ||||
-rw-r--r-- | archaeological_files/views.py | 39 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/forms/base_form.html | 3 |
4 files changed, 60 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, diff --git a/ishtar_common/templates/ishtar/forms/base_form.html b/ishtar_common/templates/ishtar/forms/base_form.html index 69825eed2..eba604929 100644 --- a/ishtar_common/templates/ishtar/forms/base_form.html +++ b/ishtar_common/templates/ishtar/forms/base_form.html @@ -11,6 +11,9 @@ {% block content %} <h2>{{page_name}}</h2> <div class='form{% if not form.SEARCH_AND_SELECT %} container{% endif %}'> + {% if info %}<div class="alert alert-info"> + {{info|safe}} + </div>{% endif %} {% if form.non_field_errors or form.errors %} <div class="alert alert-danger"> <div><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> |