diff options
Diffstat (limited to 'archaeological_files/views.py')
| -rw-r--r-- | archaeological_files/views.py | 76 | 
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}))  | 
