diff options
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 122 |
1 files changed, 11 insertions, 111 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 6aa1da77b..cbaa37310 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -20,41 +20,34 @@ """ Operations forms definitions """ -from collections import OrderedDict import datetime +from collections import OrderedDict from itertools import groupby from django import forms from django.conf import settings from django.core import validators from django.db.models import Max - from django.forms.formsets import formset_factory, DELETION_FIELD_NAME, \ TOTAL_FORM_COUNT -from django.utils.translation import ugettext_lazy as _, pgettext_lazy from django.utils.safestring import mark_safe +from django.utils.translation import ugettext_lazy as _, pgettext_lazy +import models +from archaeological_files.models import File +from archaeological_operations.utils import parse_parcels +from bootstrap_datepicker.widgets import DateField +from ishtar_common import widgets +from ishtar_common.forms import FinalForm, FormSet, get_now, \ + reverse_lazy, TableSelect, get_data_from_formset, \ + ManageOldType, IshtarForm, CustomForm, FieldType +from ishtar_common.forms_common import TownFormSet, get_town_field, TownForm from ishtar_common.models import valid_id, Person, Town, \ DocumentTemplate, Organization, get_current_profile, \ person_type_pks_lazy, person_type_pk_lazy, organization_type_pks_lazy, \ organization_type_pk_lazy - from ishtar_common.wizards import MultiValueDict -from bootstrap_datepicker.widgets import DateField - -from archaeological_files.models import File -import models - from widgets import ParcelWidget, SelectParcelWidget, OAWidget -from ishtar_common import widgets - -from ishtar_common.forms import FinalForm, FormSet, get_now, \ - reverse_lazy, get_form_selection, TableSelect, get_data_from_formset, \ - ManageOldType, IshtarForm, CustomForm, FieldType, FormSetWithDeleteSwitches -from ishtar_common.forms_common import TownFormSet, SourceForm, SourceSelect, \ - get_town_field, TownForm, BaseImageForm, BaseImageFormset - -from archaeological_operations.utils import parse_parcels class ParcelField(forms.MultiValueField): @@ -1022,14 +1015,6 @@ class CollaboratorForm(CustomForm, IshtarForm): self.fields['collaborator'].widget.attrs['full-width'] = True -ImagesFormset = formset_factory(BaseImageForm, can_delete=True, - formset=BaseImageFormset) -ImagesFormset.file_upload = True -ImagesFormset.form_label = _(u"Images") -ImagesFormset.form_admin_name = _(u"Operation - 025 - Images") -ImagesFormset.form_slug = "operation-025-images" - - class OperationFormPreventive(CustomForm, IshtarForm): form_label = _(u"Preventive informations - excavation") form_admin_name = _(u"Operation - 033 - Preventive - Excavation") @@ -1348,14 +1333,6 @@ SiteTownFormset.form_admin_name = _(u"Archaeological site - 020 - Towns") SiteTownFormset.form_slug = u"archaeological_site-020-towns" -SiteImagesFormset = formset_factory(BaseImageForm, can_delete=True, - formset=BaseImageFormset) -SiteImagesFormset.file_upload = True -SiteImagesFormset.form_label = _(u"Images") -SiteImagesFormset.form_admin_name = _(u"Archaeological site - 025 - Images") -SiteImagesFormset.form_slug = "archaeological_site-025-images" - - def check_underwater_module(self): return get_current_profile().underwater @@ -1379,83 +1356,6 @@ class SiteUnderwaterForm(ManageOldType): ) -#################################### -# Source management for operations # -#################################### - - -class OperationSourceForm(SourceForm): - form_slug = "operationsource-general" - pk = forms.IntegerField(required=False, widget=forms.HiddenInput) - index = forms.IntegerField(label=_(u"Index")) - hidden_operation_id = forms.IntegerField(label="", - widget=forms.HiddenInput) - - def __init__(self, *args, **kwargs): - super(OperationSourceForm, self).__init__(*args, **kwargs) - fields = OrderedDict() - idx = self.fields.pop('index') - for key, value in self.fields.items(): - fields[key] = value - if key == 'source_type': - fields['index'] = idx - self.fields = fields - - def clean(self): - # manage unique operation ID - cleaned_data = self.cleaned_data - operation_id = cleaned_data.get("hidden_operation_id") - index = cleaned_data.get("index") - srcs = models.OperationSource.objects\ - .filter(index=index, - operation__pk=operation_id) - if 'pk' in cleaned_data and cleaned_data['pk']: - srcs = srcs.exclude(pk=cleaned_data['pk']) - if srcs.count(): - max_val = models.OperationSource.objects\ - .filter(operation__pk=operation_id)\ - .aggregate(Max('index'))["index__max"] - operation = models.Operation.objects.get(pk=operation_id) - raise forms.ValidationError( - _(u"Index already exists for operation: %(operation)s - use a " - u"value bigger than %(last_val)d") % { - "operation": unicode(operation), 'last_val': max_val}) - return cleaned_data - - -SourceOperationFormSelection = get_form_selection( - 'SourceOperationFormSelection', _(u"Operation search"), 'operation', - models.Operation, OperationSelect, 'get-operation', - _(u"You should select an operation.")) - - -class OperationSourceSelect(SourceSelect): - operation__year = forms.IntegerField(label=_(u"Operation's year")) - operation__operation_code = forms.IntegerField( - label=_(u"Numeric reference")) - if settings.COUNTRY == 'fr': - operation__code_patriarche = forms.CharField( - max_length=500, - widget=OAWidget, - label="Code PATRIARCHE") - operation__towns = get_town_field(label=_(u"Operation's town")) - operation__operation_type = forms.ChoiceField(label=_(u"Operation type"), - choices=[]) - - def __init__(self, *args, **kwargs): - super(OperationSourceSelect, self).__init__(*args, **kwargs) - self.fields['operation__operation_type'].choices = \ - models.OperationType.get_types() - self.fields['operation__operation_type'].help_text = \ - models.OperationType.get_help() - - -OperationSourceFormSelection = get_form_selection( - 'OperationSourceFormSelection', _(u"Documentation search"), 'pk', - models.OperationSource, OperationSourceSelect, 'get-operationsource', - _(u"You should select a document."), - get_full_url='get-operationsource-full') - ################################################ # Administrative act management for operations # ################################################ |