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