diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-04-28 09:55:25 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-08 09:58:47 +0200 |
commit | 96ad40f28ff3e17f8173ec8de8b63ef6056e6e55 (patch) | |
tree | 5284082668976459d1b304532f883aad0f8044a9 /archaeological_files/forms.py | |
parent | c706c72acceef2665bd0a44214401fcb9cd38033 (diff) | |
download | Ishtar-96ad40f28ff3e17f8173ec8de8b63ef6056e6e55.tar.bz2 Ishtar-96ad40f28ff3e17f8173ec8de8b63ef6056e6e55.zip |
WIP: preventive forms
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 |