summaryrefslogtreecommitdiff
path: root/archaeological_files/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_files/forms.py')
-rw-r--r--archaeological_files/forms.py188
1 files changed, 187 insertions, 1 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 2cb08b5d7..51d1fdeb0 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -20,12 +20,13 @@
"""
Files forms definitions
"""
+
import datetime
from django import forms
from django.conf import settings
from django.core import validators
-from django.forms.formsets import formset_factory
+from django.forms.formsets import formset_factory, BaseFormSet
from django.utils.functional import lazy
from django.utils.safestring import mark_safe
from ishtar_common.utils import ugettext_lazy as _
@@ -57,6 +58,7 @@ from ishtar_common.forms import (
LockForm,
CustomFormSearch,
DocumentItemSelect,
+ FormHeader,
)
from ishtar_common.forms_common import get_town_field
from archaeological_operations.forms import (
@@ -506,6 +508,190 @@ class FinalFileDeleteForm(FinalForm):
confirm_end_msg = _("Would you like to delete this archaeological file ?")
+class FileFormPreventiveDetail(forms.ModelForm, CustomForm, ManageOldType):
+ form_label = _("Preventive file")
+ form_admin_name = _("Preventive file - 020 - Edition form")
+ form_slug = "preventive-020-edition-form"
+
+ associated_models = {}
+
+ HEADERS = {
+ "start_date": FormHeader(_("Dates")),
+ "total_developed_surface": FormHeader(_("Surfaces")),
+ }
+
+ class Meta:
+ model = models.File
+ fields = ["start_date", "end_date", "ground_start_date",
+ "ground_end_date", "study_period", "execution_report_date",
+ "total_developed_surface", "total_surface", "linear_meter"]
+
+ pk = forms.IntegerField(label="", required=False, widget=forms.HiddenInput)
+ start_date = forms.DateField(
+ label=_("Start date"), widget=DatePicker, required=False
+ )
+ end_date = forms.DateField(label=_("End date"), widget=DatePicker, required=False)
+ ground_start_date = forms.DateField(
+ label=_("Ground start date"), widget=DatePicker, required=False
+ )
+ ground_end_date = forms.DateField(
+ label=_("Ground end date"), widget=DatePicker, required=False
+ )
+ study_period = forms.CharField(
+ label=_("Study period"),
+ max_length=200,
+ required=False,
+ )
+ execution_report_date = forms.DateField(
+ label=_("Execution report date"), widget=DatePicker, required=False
+ )
+ total_developed_surface = forms.FloatField(
+ widget=widgets.AreaWidget,
+ label=_("Total developed surface (m2)"),
+ required=False,
+ validators=[
+ validators.MinValueValidator(0),
+ validators.MaxValueValidator(999999999),
+ ],
+ )
+ total_surface = forms.FloatField(
+ required=False,
+ widget=widgets.AreaWidget,
+ label=_("Total surface (m2)"),
+ validators=[
+ validators.MinValueValidator(0),
+ validators.MaxValueValidator(999999999),
+ ],
+ )
+ linear_meter = forms.IntegerField(
+ label=_("Linear meter (m)"), required=False,
+ widget=widgets.MeterKilometerWidget,
+ )
+
+ def __init__(self, *args, **kwargs):
+ self.user = None
+ if kwargs.get("user", None):
+ self.user = kwargs.pop("user")
+ super(FileFormPreventiveDetail, self).__init__(*args, **kwargs)
+
+
+class FileBaseFormset(forms.BaseModelFormSet):
+ def __init__(self, *args, **kwargs):
+ self.instance = None
+ if "instance" in kwargs:
+ self.instance = kwargs.pop("instance")
+ super().__init__(*args, **kwargs)
+ self.queryset = self.model.objects.filter(pk=None)
+ if self.instance:
+ self.queryset = self.model.objects.filter(file_id=self.instance.pk)
+
+
+class PreventiveFileJobForm(forms.ModelForm):
+ file_id = forms.IntegerField(widget=forms.HiddenInput)
+ job = forms.ChoiceField(choices=[])
+ man_by_day_planned = forms.FloatField(_("Man by day - planned"), required=False)
+ days_planned = forms.FloatField(_("Days - planned"), required=False)
+ man_by_day_worked = forms.FloatField(_("Man by day - worked"), required=False)
+ days_worked = forms.FloatField(_("Days - worked"), required=False)
+
+ class Meta:
+ model = models.PreventiveFileJob
+ exclude = ["file"]
+
+
+class PreventiveFileJobBaseFormSet(FileBaseFormset):
+ model = models.PreventiveFileJob
+
+
+PreventiveFileJobFormSet = formset_factory(
+ PreventiveFileJobForm, formset=PreventiveFileJobBaseFormSet, can_delete=True)
+PreventiveFileJobFormSet.form_label = _("Preventive - Jobs")
+PreventiveFileJobFormSet.form_admin_name = _("Preventive file - 030 - Jobs")
+PreventiveFileJobFormSet.form_slug = "preventive-030-jobs"
+
+
+class PreventiveFileGroundJobForm(forms.ModelForm):
+ file_id = forms.IntegerField(widget=forms.HiddenInput)
+ ground_job = forms.ChoiceField(choices=[])
+ man_by_day_planned = forms.FloatField(_("Man by day - planned"), required=False)
+ days_planned = forms.FloatField(_("Days - planned"), required=False)
+ man_by_day_worked = forms.FloatField(_("Man by day - worked"), required=False)
+ days_worked = forms.FloatField(_("Days - worked"), required=False)
+
+ class Meta:
+ model = models.PreventiveFileGroundJob
+ exclude = ["file"]
+
+
+class PreventiveFileGroundJobBaseFormSet(FileBaseFormset):
+ model = models.PreventiveFileGroundJob
+
+
+PreventiveFileGroundJobFormSet = formset_factory(
+ PreventiveFileGroundJobForm, formset=PreventiveFileGroundJobBaseFormSet,
+ can_delete=True
+)
+PreventiveFileGroundJobFormSet.form_label = _("Preventive - Ground jobs")
+PreventiveFileGroundJobFormSet.form_admin_name = _(
+ "Preventive file - 040 - Ground jobs"
+)
+PreventiveFileGroundJobFormSet.form_slug = "preventive-040-ground-jobs"
+
+
+class PreventiveFileEquipmentForm(forms.ModelForm):
+ file_id = forms.IntegerField(widget=forms.HiddenInput)
+ equipment = forms.ChoiceField(choices=[])
+ man_by_day_planned = forms.FloatField(_("Man by day - planned"), required=False)
+ days_planned = forms.FloatField(_("Days - planned"), required=False)
+ man_by_day_worked = forms.FloatField(_("Man by day - worked"), required=False)
+ days_worked = forms.FloatField(_("Days - worked"), required=False)
+
+ class Meta:
+ model = models.PreventiveFileEquipmentCost
+ exclude = ["file"]
+
+
+class PreventiveFileEquipmentBaseFormSet(FileBaseFormset):
+ model = models.PreventiveFileEquipmentCost
+
+
+PreventiveFileEquipmentFormSet = formset_factory(
+ PreventiveFileEquipmentForm, formset=PreventiveFileEquipmentBaseFormSet,
+ can_delete=True
+)
+PreventiveFileEquipmentFormSet.form_label = _("Preventive - Equipment")
+PreventiveFileEquipmentFormSet.form_admin_name = _("Preventive file - 050 - Equipments")
+PreventiveFileEquipmentFormSet.form_slug = "preventive-050-equipments"
+
+
+class PreventiveFileTechnicalServiceForm(forms.ModelForm):
+ file_id = forms.IntegerField(widget=forms.HiddenInput)
+ technical_service = forms.ChoiceField(choices=[])
+ man_by_day_planned = forms.FloatField(_("Man by day - planned"), required=False)
+ days_planned = forms.FloatField(_("Days - planned"), required=False)
+ man_by_day_worked = forms.FloatField(_("Man by day - worked"), required=False)
+ days_worked = forms.FloatField(_("Days - worked"), required=False)
+
+ class Meta:
+ model = models.PreventiveFileTechnicalServiceCost
+ exclude = ["file"]
+
+
+class PreventiveFileTechnicalServiceBaseFormSet(FileBaseFormset):
+ model = models.PreventiveFileTechnicalServiceCost
+
+
+PreventiveFileTechnicalServiceFormSet = formset_factory(
+ PreventiveFileTechnicalServiceForm,
+ formset=PreventiveFileTechnicalServiceBaseFormSet, can_delete=True
+)
+PreventiveFileTechnicalServiceFormSet.form_label = _("Preventive - Technical Services")
+PreventiveFileTechnicalServiceFormSet.form_admin_name = _(
+ "Preventive file - 060 - TechnicalServices"
+)
+PreventiveFileTechnicalServiceFormSet.form_slug = "preventive-060-technical_services"
+
+
class AdministrativeActFileModifySelect(TableSelect):
_model = AdministrativeAct