summaryrefslogtreecommitdiff
path: root/archaeological_files/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-07-09 19:20:12 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:47 +0200
commitc3d97de7bdec3f7899340c606f46276836eb2a8b (patch)
treef65f72441311e7378b90674a31e3109034aca890 /archaeological_files/forms.py
parent3142d9d08e88dfd58a02a10821bfd26b49a35f79 (diff)
downloadIshtar-c3d97de7bdec3f7899340c606f46276836eb2a8b.tar.bz2
Ishtar-c3d97de7bdec3f7899340c606f46276836eb2a8b.zip
Preventive file: work on inlines
Diffstat (limited to 'archaeological_files/forms.py')
-rw-r--r--archaeological_files/forms.py98
1 files changed, 51 insertions, 47 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 8b5b3d00d..3c113c665 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -26,7 +26,7 @@ import datetime
from django import forms
from django.conf import settings
from django.core import validators
-from django.forms.formsets import formset_factory, BaseFormSet
+from django.forms.formsets import formset_factory
from django.utils.functional import lazy
from django.utils.safestring import mark_safe
from ishtar_common.utils import ugettext_lazy as _
@@ -592,6 +592,12 @@ class FileBaseFormset(forms.BaseModelFormSet):
if self.instance:
self.queryset = self.model.objects.filter(file_id=self.instance.pk)
+ def get_form_kwargs(self, index):
+ kwargs = super(FileBaseFormset, self).get_form_kwargs(index)
+ if self.instance:
+ kwargs['file_id'] = self.instance.pk
+ return kwargs
+
INLINE_JOB_FIELDS = ["man_by_day_planned", "days_planned", "man_by_day_worked",
"days_worked"]
@@ -607,12 +613,25 @@ JOB_LABELS = {
"days_planned": _("Days"),
"man_by_day_worked": _("Man by day"),
"days_worked": _("Days"),
+ "Job": _("Job")
}
-class PreventiveFileJobForm(forms.ModelForm):
+class PreventiveFileForm(forms.ModelForm):
file_id = forms.IntegerField(widget=forms.HiddenInput)
+ def __init__(self, *args, **kwargs):
+ self.file_id = kwargs.pop("file_id")
+ super().__init__(*args, **kwargs)
+ self.fields["file_id"].initial = self.file_id
+
+ def save(self, commit=True):
+ if not self.errors:
+ self.instance.file_id = self.file_id
+ return super().save(commit=commit)
+
+
+class PreventiveFileJobForm(PreventiveFileForm):
class Meta:
model = models.PreventiveFileJob
fields = ["job"] + INLINE_JOB_FIELDS
@@ -633,9 +652,7 @@ PreventiveFileJobFormSet.form_slug = "preventive-030-post-excavation"
PreventiveFileJobFormSet.dynamic_add = True
-class PreventiveFileGroundJobForm(forms.ModelForm):
- file_id = forms.IntegerField(widget=forms.HiddenInput)
-
+class PreventiveFileGroundJobForm(PreventiveFileForm):
class Meta:
model = models.PreventiveFileGroundJob
fields = ["job"] + INLINE_JOB_FIELDS
@@ -663,67 +680,54 @@ COST_LABELS = {
"days_planned": _("Days / weeks / months"),
"quantity_by_day_worked": _("Quantity"),
"days_worked": _("Days / weeks / months"),
+ "equipment_service_cost": _("Equipment / service")
}
INLINE_COST_FIELDS = [
"quantity_by_day_planned", "days_planned", "quantity_by_day_worked", "days_worked"]
COST_WIDGETS = {
- "quantity_by_day_planned": forms.NumberInput(attrs={"class": "w-50 form-planned"}),
+ "quantity_by_day_planned": forms.NumberInput(
+ attrs={"class": "w-50 form-planned"}),
"days_planned": forms.NumberInput(attrs={"class": "w-50 form-planned"}),
"quantity_by_day_worked": forms.NumberInput(attrs={"class": "w-50 form-worked"}),
- "days_worked": forms.NumberInput(attrs={"class": "w-50 form-worked"})
+ "days_worked": forms.NumberInput(attrs={"class": "w-50 form-worked"}),
+ "equipment_service_cost": forms.Select(
+ attrs={"class":"form-cost", "bs_col_width": "col-12"})
}
-class PreventiveFileEquipmentForm(forms.ModelForm):
- file_id = forms.IntegerField(widget=forms.HiddenInput)
-
- class Meta:
- model = models.PreventiveFileEquipmentCost
- fields = ["equipment_cost"] + INLINE_COST_FIELDS
- widgets = COST_WIDGETS
- labels = COST_LABELS
-
-
-class PreventiveFileEquipmentBaseFormSet(FileBaseFormset):
- model = models.PreventiveFileEquipmentCost
-
-
-PreventiveFileEquipmentFormSet = formset_factory(
- PreventiveFileEquipmentForm, formset=PreventiveFileEquipmentBaseFormSet,
- can_delete=True
-)
-PreventiveFileEquipmentFormSet.form_label = _("Equipment")
-PreventiveFileEquipmentFormSet.form_admin_name = _("Preventive file - 050 - Equipments")
-PreventiveFileEquipmentFormSet.form_slug = "preventive-050-equipments"
-PreventiveFileEquipmentFormSet.dynamic_add = True
-
-
-class PreventiveFileTechnicalServiceForm(forms.ModelForm):
- file_id = forms.IntegerField(widget=forms.HiddenInput)
+class PreventiveFileEquipmentServiceForm(PreventiveFileForm):
+ type_filter = None
class Meta:
- model = models.PreventiveFileTechnicalServiceCost
- fields = ["technical_service_cost"] + INLINE_COST_FIELDS
+ model = models.PreventiveFileEquipmentServiceCost
+ fields = ["equipment_service_cost"] + INLINE_COST_FIELDS
widgets = COST_WIDGETS
labels = COST_LABELS
+ def __init__(self, *args, **kwargs):
+ super(PreventiveFileEquipmentServiceForm, self).__init__(*args, **kwargs)
+ q = models.EquipmentServiceCost.objects.filter(
+ available=True,
+ equipment_service_type__parent__isnull=True,
+ equipment_service_type__generic_equipment_type__txt_idx=self.type_filter
+ )
-class PreventiveFileTechnicalServiceBaseFormSet(FileBaseFormset):
- model = models.PreventiveFileTechnicalServiceCost
+ self.unities = {}
+ unit_dict = dict(models.ES_UNITS)
+ choices = [("", "--")]
+ for cost in q.all():
+ choices.append((cost.pk, str(cost)))
+ if cost.unit:
+ self.unities[cost.pk] = unit_dict[cost.unit]
+ self.fields["equipment_service_cost"].choices = choices
+ self.fields["quantity_by_day_planned"].initial = 1
+ self.fields["days_planned"].unit = "..."
-PreventiveFileTechnicalServiceFormSet = formset_factory(
- PreventiveFileTechnicalServiceForm,
- formset=PreventiveFileTechnicalServiceBaseFormSet, can_delete=True
-)
-PreventiveFileTechnicalServiceFormSet.form_label = _("Technical Services")
-PreventiveFileTechnicalServiceFormSet.form_admin_name = _(
- "Preventive file - 060 - TechnicalServices"
-)
-PreventiveFileTechnicalServiceFormSet.form_slug = "preventive-060-technical_services"
-PreventiveFileTechnicalServiceFormSet.dynamic_add = True
+class PreventiveFileEquipmentServiceBaseFormSet(FileBaseFormset):
+ model = models.PreventiveFileEquipmentServiceCost
class AdministrativeActFileModifySelect(TableSelect):