diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-18 11:20:39 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:17 +0100 | 
| commit | 1d325c4b42b47cc21705473dbf099c87ee20119a (patch) | |
| tree | e670d785fa12943e1b857fb700308638d08c9b7d /archaeological_operations/forms.py | |
| parent | 88126820a6ea96d5ad1ad3eb09a1edff2b26b701 (diff) | |
| download | Ishtar-1d325c4b42b47cc21705473dbf099c87ee20119a.tar.bz2 Ishtar-1d325c4b42b47cc21705473dbf099c87ee20119a.zip  | |
Operation wizard refactoring
Diffstat (limited to 'archaeological_operations/forms.py')
| -rw-r--r-- | archaeological_operations/forms.py | 184 | 
1 files changed, 56 insertions, 128 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index caa19a1fb..6b5bfbd51 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -673,15 +673,6 @@ class OperationFormFileChoice(IshtarForm):          validators=[valid_id(File)], required=False) -class OperationFormAbstract(CustomForm, IshtarForm): -    form_label = _("Abstract") -    form_admin_name = _("Operation - 090 - Abstract") -    form_slug = "operation-090-abstract" -    abstract = forms.CharField( -        label=_("Abstract"), -        widget=forms.Textarea(attrs={'class': 'xlarge'}), required=False) - -  SLICING = (("month", _("months")), ('year', _("years")),)  DATE_SOURCE = (('creation', _("Creation date")), @@ -767,6 +758,13 @@ class OperationFormGeneral(CustomForm, ManageOldType):      form_slug = "operation-010-general"      file_upload = True +    base_models = [ +        "archaeological_site", +        "collaborator", +        "period", +        "town", +        "remain", +    ]      associated_models = {          'scientist': Person,          'in_charge': Person, @@ -775,8 +773,13 @@ class OperationFormGeneral(CustomForm, ManageOldType):          'operation_type': models.OperationType,          'record_quality_type': models.RecordQualityType,          'report_processing': models.ReportState, -        'spatial_reference_system': SpatialReferenceSystem, +        'collaborator': Person, +        'remain': models.RemainType, +        'period': models.Period, +        'archaeological_site': models.ArchaeologicalSite, +        'town': Town,      } +    HEADERS['code_patriarche'] = FormHeader(_("General"))      pk = forms.IntegerField(required=False, widget=forms.HiddenInput)      code_patriarche = forms.CharField(label="Code PATRIARCHE",                                        max_length=500, @@ -790,6 +793,13 @@ class OperationFormGeneral(CustomForm, ManageOldType):                                    max_length=500, widget=forms.Textarea)      address = forms.CharField(label=_("Address / Locality"), required=False,                                max_length=500, widget=forms.Textarea) +    town = widgets.Select2MultipleField( +        label=_("Towns"), +        model=Town, +        required=False, remote=True) +    archaeological_site = widgets.Select2MultipleField( +        model=models.ArchaeologicalSite, +        required=False, remote=True)      year = forms.IntegerField(label=_("Year"),                                initial=lambda: datetime.datetime.now().year,                                validators=[validators.MinValueValidator(1000), @@ -797,6 +807,16 @@ class OperationFormGeneral(CustomForm, ManageOldType):      old_code = forms.CharField(          label=_("Old code"), required=False,          validators=[validators.MaxLengthValidator(200)]) +    surface = forms.FloatField( +        required=False, widget=widgets.AreaWidget, +        label=_("Total surface (m2)"), +        validators=[validators.MinValueValidator(0), +                    validators.MaxValueValidator(999999999)]) +    virtual_operation = forms.BooleanField(required=False, +                                           label=_("Virtual operation")) +    comment = forms.CharField(label=_("Comment"), widget=forms.Textarea, +                              required=False) +    HEADERS['scientist'] = FormHeader(_("Actors"))      scientist = forms.IntegerField(          label=_("Head scientist"),          widget=widgets.JQueryAutoComplete( @@ -832,11 +852,9 @@ class OperationFormGeneral(CustomForm, ManageOldType):              limit={'person_types': [person_type_pk_lazy('sra_agent')]},              new=True),          validators=[valid_id(Person)], required=False) -    surface = forms.FloatField( -        required=False, widget=widgets.AreaWidget, -        label=_("Total surface (m2)"), -        validators=[validators.MinValueValidator(0), -                    validators.MaxValueValidator(999999999)]) +    collaborator = widgets.Select2MultipleField( +        model=Person, label=_("Collaborators"), required=False, remote=True) +    HEADERS['start_date'] = FormHeader(_("Dates / Administrative"))      start_date = DateField(label=_("Start date"), required=False)      excavation_end_date = DateField(label=_("Excavation end date"),                                      required=False) @@ -872,28 +890,21 @@ class OperationFormGeneral(CustomForm, ManageOldType):      finds_received = forms.NullBooleanField(          required=False, label=_("Finds received")) -    comment = forms.CharField(label=_("Comment"), widget=forms.Textarea, -                              required=False) +    HEADERS['scientific_documentation_comment'] = FormHeader(_("Scientific"))      scientific_documentation_comment = forms.CharField(          label=_("Comment about scientific documentation"),          widget=forms.Textarea, required=False)      record_quality_type = forms.ChoiceField(label=_("Record quality"),                                              required=False) -    virtual_operation = forms.BooleanField(required=False, -                                           label=_("Virtual operation")) - -    HEADERS['x'] = FormHeader(_("Coordinates")) -    x = forms.FloatField(label=_("X"), required=False) -    estimated_error_x = forms.FloatField(label=_("Estimated error for X"), -                                         required=False) -    y = forms.FloatField(label=_("Y"), required=False) -    estimated_error_y = forms.FloatField(label=_("Estimated error for Y"), -                                         required=False) -    z = forms.FloatField(label=_("Z"), required=False) -    estimated_error_z = forms.FloatField(label=_("Estimated error for Z"), -                                         required=False) -    spatial_reference_system = forms.ChoiceField( -        label=_("Spatial Reference System"), required=False, choices=[]) +    remain = widgets.Select2MultipleField( +        label=_("Remain type"), required=False +    ) +    period = widgets.Select2MultipleField( +        label=_("Period"), required=False +    ) +    abstract = forms.CharField( +        label=_("Abstract"), +        widget=forms.Textarea(attrs={'class': 'xlarge'}), required=False)      FILE_FIELDS = [          'report_delivery_date', @@ -902,17 +913,6 @@ class OperationFormGeneral(CustomForm, ManageOldType):          'cira_date',          'negative_result'      ] -    PROFILE_FILTER = { -        'mapping': [ -            'x', -            'y', -            'z', -            'estimated_error_x', -            'estimated_error_y', -            'estimated_error_z', -            'spatial_reference_system' -        ], -    }      WAREHOUSE_FIELDS = [          'documentation_deadline',          'documentation_received', @@ -924,9 +924,14 @@ class OperationFormGeneral(CustomForm, ManageOldType):          FieldType('record_quality_type', models.RecordQualityType),          FieldType('report_processing', models.ReportState),          FieldType('spatial_reference_system', SpatialReferenceSystem), +        FieldType('remain', models.RemainType, is_multiple=True), +        FieldType('period', models.Period, is_multiple=True),      ]      def __init__(self, *args, **kwargs): +        towns = None +        if kwargs.get("data", None) and kwargs['data'].get("TOWNS", None): +            towns = kwargs['data']['TOWNS']          super(OperationFormGeneral, self).__init__(*args, **kwargs)          profile = get_current_profile()          if not profile.files: @@ -937,6 +942,12 @@ class OperationFormGeneral(CustomForm, ManageOldType):                  self.remove_field(key)          if not profile.underwater:              self.fields.pop('drassm_code') +        if 'collaborator' in self.fields: +            self.fields['collaborator'].widget.attrs['full-width'] = True +        if towns and towns != -1: +            self.fields['town'].choices = [('', '--')] + towns +        if 'archaeological_site' in self.fields: +            self.fields['archaeological_site'].label = get_current_profile().get_site_label()      def clean(self):          cleaned_data = self.cleaned_data @@ -1010,11 +1021,11 @@ class OperationFormModifGeneral(OperationFormGeneral):          for idx, field in enumerate(list(self.fields.items())):              key, value = field              if 'associated_file' in self.fields and ( -                    key == 'in_charge' or idx > 6): +                    key == 'in_charge' or idx > 8):                  fields['associated_file'] = self.fields.pop('associated_file')              fields[key] = value              if 'operation_code' in self.fields and ( -                    key == 'year' or idx > 5): +                    key == 'year' or idx > 7):                  fields['operation_code'] = self.fields.pop('operation_code')          self.fields = fields @@ -1061,22 +1072,6 @@ class CourtOrderedSeizureForm(CustomForm, IshtarForm):      ) -class CollaboratorForm(CustomForm, IshtarForm): -    form_label = _("Collaborators") -    form_admin_name = _("Operation - 020 - Collaborators") -    form_slug = "operation-020-collaborators" - -    base_models = ['collaborator'] -    associated_models = {'collaborator': Person, } -    collaborator = widgets.Select2MultipleField( -        model=Person, label=_("Collaborators"), required=False, remote=True) - -    def __init__(self, *args, **kwargs): -        super(CollaboratorForm, self).__init__(*args, **kwargs) -        if 'collaborator' in self.fields: -            self.fields['collaborator'].widget.attrs['full-width'] = True - -  class OperationFormPreventive(CustomForm, IshtarForm):      form_label = _("Preventive informations - excavation")      form_admin_name = _("Operation - 033 - Preventive - Excavation") @@ -1192,38 +1187,6 @@ class SelectedParcelFormSet(forms.Form):  """ -class RemainForm(CustomForm, ManageOldType, forms.Form): -    form_label = _("Remain types") -    form_admin_name = _("Operation - 060 - Remains") -    form_slug = "operation-060-remains" - -    base_model = 'remain' -    associated_models = {'remain': models.RemainType} -    remain = widgets.Select2MultipleField( -        label=_("Remain type"), required=False -    ) - -    TYPES = [ -        FieldType('remain', models.RemainType, True), -    ] - - -class PeriodForm(CustomForm, ManageOldType, forms.Form): -    form_label = _("Periods") -    form_admin_name = _("Operation - 070 - Periods") -    form_slug = "operation-070-periods" - -    base_model = 'period' -    associated_models = {'period': models.Period} -    period = widgets.Select2MultipleField( -        label=_("Period"), required=False -    ) - -    TYPES = [ -        FieldType('period', models.Period, True), -    ] - -  class ArchaeologicalSiteForm(ManageOldType):      associated_models = {'period': models.Period, 'remain': models.RemainType,                           'cultural_attribution': models.CulturalAttributionType, @@ -1326,41 +1289,6 @@ class ArchaeologicalSiteForm(ManageOldType):          return item -class ArchaeologicalSiteBasicForm(widgets.Select2Media, IshtarForm): -    form_label = _("Archaeological site") -    base_model = 'archaeological_site' -    associated_models = {'archaeological_site': models.ArchaeologicalSite} -    archaeological_site = forms.IntegerField( -        label=_("Archaeological site"), -        widget=widgets.JQueryAutoComplete( -            reverse_lazy('autocomplete-archaeologicalsite'), -            associated_model=models.ArchaeologicalSite, -            new=True), -        validators=[valid_id(models.ArchaeologicalSite)], -        required=False) -    SITE_KEYS = {"archaeological_site": None} - - -ArchaeologicalSiteFormSet = formset_factory( -    ArchaeologicalSiteBasicForm, can_delete=True, formset=FormSet) -ArchaeologicalSiteFormSet.form_label = _("Archaeological sites") -ArchaeologicalSiteFormSet.form_admin_name = _( -    "Operation - 030 - Archaeological sites") -ArchaeologicalSiteFormSet.form_slug = "operation-030-archaeological-sites" -ArchaeologicalSiteFormSet.extra_form_modals = ["archaeologicalsite"] - - -class ArchaeologicalSiteSelectionForm(IshtarForm): -    # TODO: used? -    form_label = _("Associated archaeological sites") -    archaeological_sites = forms.IntegerField( -        widget=widgets.JQueryAutoComplete( -            reverse_lazy('autocomplete-archaeologicalsite'), -            associated_model=models.ArchaeologicalSite, new=True, -            multiple=True), -        label=_("Search")) - -  class FinalOperationClosingForm(FinalForm):      confirm_msg = " "      confirm_end_msg = _("Would you like to close this operation?")  | 
