summaryrefslogtreecommitdiff
path: root/archaeological_files/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-07-30 17:50:44 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:48 +0200
commit585f2a1e3e0576ce7fe0bf8efd973a9d419a7691 (patch)
treeb03166b3b500fbe908cc450d33cef75f271bb9ba /archaeological_files/views.py
parent6256a635ee365880383e4832e1551d063201956f (diff)
downloadIshtar-585f2a1e3e0576ce7fe0bf8efd973a9d419a7691.tar.bz2
Ishtar-585f2a1e3e0576ce7fe0bf8efd973a9d419a7691.zip
Preventive file: add default costs
Diffstat (limited to 'archaeological_files/views.py')
-rw-r--r--archaeological_files/views.py76
1 files changed, 59 insertions, 17 deletions
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 4cf3ce390..26787142f 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -368,8 +368,7 @@ class MixFormFormsetUpdateView(UpdateView):
def get(self, request, *args, **kwargs):
self.object = self.get_object()
self.inline_forms = [
- inline(instance=self.object,
- prefix=getattr(inline, "form_slug", "form"))
+ inline(instance=self.object, prefix=getattr(inline, "form_slug", "form"))
for inline in self.get_form_inlines_class()
]
return super(MixFormFormsetUpdateView, self).get(request, *args, **kwargs)
@@ -378,8 +377,11 @@ class MixFormFormsetUpdateView(UpdateView):
self.object = self.get_object()
form = self.form_class(data=request.POST, instance=self.object)
self.inline_forms = [
- inline(instance=self.object, data=request.POST,
- prefix=getattr(inline, "form_slug", "form"))
+ inline(
+ instance=self.object,
+ data=request.POST,
+ prefix=getattr(inline, "form_slug", "form"),
+ )
for inline in self.get_form_inlines_class()
]
if form.is_valid() and all((inline.is_valid() for inline in self.inline_forms)):
@@ -416,19 +418,30 @@ class PreventiveEditView(IshtarMixin, LoginRequiredMixin, MixFormFormsetUpdateVi
forms.PreventiveFileJobFormSet,
]
self.inline_types = list(
- models.GenericEquipmentServiceType.objects.filter(available=True).all())
+ models.GenericEquipmentServiceType.objects.filter(available=True).all()
+ )
for inline_type in self.inline_types:
- form_class_name = "".join([
- t.capitalize()
- for t in inline_type.txt_idx.replace(
- '-', ' ').replace('_', ' ').split(" ")]) + "Formset"
- form = type(form_class_name,
- (forms.PreventiveFileEquipmentServiceForm,),
- {"type_filter": inline_type.txt_idx})
+ form_class_name = (
+ "".join(
+ [
+ t.capitalize()
+ for t in inline_type.txt_idx.replace("-", " ")
+ .replace("_", " ")
+ .split(" ")
+ ]
+ )
+ + "Formset"
+ )
+ form = type(
+ form_class_name,
+ (forms.PreventiveFileEquipmentServiceForm,),
+ {"type_filter": inline_type.txt_idx},
+ )
formset = formset_factory(
- form, formset=forms.PreventiveFileEquipmentServiceBaseFormSet,
- can_delete=True
+ form,
+ formset=forms.PreventiveFileEquipmentServiceBaseFormSet,
+ can_delete=True,
)
formset.form_label = str(inline_type)
formset.form_slug = inline_type.txt_idx
@@ -449,9 +462,7 @@ class PreventiveEditView(IshtarMixin, LoginRequiredMixin, MixFormFormsetUpdateVi
if not check_permission(self.request, "file/edit-preventive/", file.pk):
raise Http404()
initial = {}
- for k in (
- list(self.form_class.base_fields.keys())
- ):
+ for k in list(self.form_class.base_fields.keys()):
value = getattr(file, k)
if hasattr(value, "all"):
value = ",".join([str(v.pk) for v in value.all()])
@@ -476,3 +487,34 @@ class PreventiveEditView(IshtarMixin, LoginRequiredMixin, MixFormFormsetUpdateVi
context["form_unities"] = unities.items()
context["form_flat_rates"] = flat_rates
return context
+
+
+def file_edit_preventive_add_default(request, pk):
+ job_attrs = (
+ ("default_daily_need_on_ground", models.PreventiveFileGroundJob),
+ ("default_daily_need", models.PreventiveFileJob),
+ )
+ for attr, job_model in job_attrs:
+ jobs = models.Job.objects.exclude(**{attr: 0})
+ for job in jobs:
+ q = job_model.objects.filter(job=job, file_id=pk)
+ if not q.count():
+ dct = {
+ "job": job,
+ "file_id": pk,
+ "days_planned": 1,
+ "man_by_day_planned": getattr(job, attr)
+ }
+ job_model.create(**dct)
+ q = models.EquipmentServiceCost.exclude(default_quantity_by_day=0)
+ for cost in list(q.all()):
+ q = models.PreventiveFileEquipmentServiceCost.objects.filter(
+ equipment_service_cost=cost, file_id=pk)
+ if not q.count():
+ models.PreventiveFileEquipmentServiceCost.objects.create(
+ equipment_service_cost=cost, file_id=pk,
+ quantity_by_day_planned=cost.default_quantity_by_day,
+ days_planned=1
+ )
+
+ return redirect(reverse("file-edit-preventive", kwargs={"pk": pk}))