diff options
Diffstat (limited to 'archaeological_operations/forms.py')
| -rw-r--r-- | archaeological_operations/forms.py | 71 | 
1 files changed, 34 insertions, 37 deletions
| diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index e3e287d24..651cd740f 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -20,6 +20,7 @@  """  Operations forms definitions  """ +from collections import OrderedDict  import datetime  from itertools import groupby @@ -104,7 +105,7 @@ class ParcelForm(forms.Form):              prefix_value = kwargs['prefix'] + '-town'              if not [k for k in kwargs['data'].keys()                      if k.startswith(prefix_value) and kwargs['data'][k]]: -                kwargs['data'] = None +                kwargs['data'] = {}                  if 'files' in kwargs:                      kwargs.pop('files')          super(ParcelForm, self).__init__(*args, **kwargs) @@ -259,8 +260,8 @@ class ParcelFormSet(FormSet):                  if not value:                      continue                  try: -                    parcel = models.Parcel.objects.get(pk=value) -                except models.Parcel.DoesNotExist: +                    parcel = models.Parcel.objects.get(pk=int(value)) +                except (models.Parcel.DoesNotExist, ValueError):                      continue                  ordering_keys[number] = [                      parcel.public_domain, parcel.town, parcel.year, @@ -335,7 +336,6 @@ class ParcelFormSet(FormSet):      def clean(self):          # manage parcel selection -        selected_town, parcels = None, []          if self.data.get('_parcel_selection'):              parcels = parse_parcels(self.data['_parcel_selection'])              selected_town = self.data.get('_town') @@ -417,7 +417,7 @@ class RecordRelationsForm(ManageOldType, forms.Form):              raise forms.ValidationError(                  _(u"You should select a relation type."))          if self.left_record and \ -                str(cleaned_data.get('right_record')) == str( +                str(cleaned_data.get('right_record', None)) == str(                      self.left_record.pk):              raise forms.ValidationError(                  _(u"An operation cannot be related to herself.")) @@ -909,11 +909,13 @@ class OperationFormGeneral(ManageOldType, forms.Form):          self.fields['record_quality'].choices = \              [('', '--')] + list(models.QUALITY)          if 'operation_code' in self.fields: -            self.fields.keyOrder = list(self.fields.keyOrder) -            self.fields.keyOrder.pop(self.fields.keyOrder.index( -                'operation_code')) -            self.fields.keyOrder.insert(self.fields.keyOrder.index('year'), -                                        'operation_code') +            fields = OrderedDict() +            ope_code = self.fields.pop('operation_code') +            for key, value in self.fields.items(): +                if key == 'year': +                    fields['operation_code'] = ope_code +                fields[key] = value +            self.fields = fields      def clean(self):          cleaned_data = self.cleaned_data @@ -976,12 +978,15 @@ class OperationFormModifGeneral(OperationFormGeneral):      def __init__(self, *args, **kwargs):          super(OperationFormModifGeneral, self).__init__(*args, **kwargs) -        self.fields.keyOrder = list(self.fields.keyOrder) -        self.fields.keyOrder.pop(self.fields.keyOrder.index('associated_file')) -        self.fields.keyOrder.insert(self.fields.keyOrder.index('in_charge'), -                                    'associated_file') +        asso_file = self.fields.pop('associated_file')          if not get_current_profile().files: -            self.fields.pop('associated_file') +            return +        fields = OrderedDict() +        for key, value in self.fields.items(): +            if key == 'in_charge': +                fields['associated_file'] = asso_file +            fields[key] = value +        self.fields = fields  OperationFormModifGeneral.associated_models = \      OperationFormGeneral.associated_models.copy() @@ -1039,13 +1044,6 @@ class SelectedTownForm(forms.Form):          towns = None          if 'data' in kwargs and 'TOWNS' in kwargs['data']:              towns = kwargs['data']['TOWNS'] -            # clean data if not "real" data -            prefix_value = kwargs['prefix'] + '-town' -            if not [k for k in kwargs['data'].keys() -                    if k.startswith(prefix_value) and kwargs['data'][k]]: -                kwargs['data'] = None -                if 'files' in kwargs: -                    kwargs.pop('files')          super(SelectedTownForm, self).__init__(*args, **kwargs)          if towns and towns != -1:              self.fields['town'].choices = [('', '--')] + towns @@ -1065,13 +1063,6 @@ class SelectedParcelForm(forms.Form):          parcels = None          if 'data' in kwargs and 'PARCELS' in kwargs['data']:              parcels = kwargs['data']['PARCELS'] -            # clean data if not "real" data -            prefix_value = kwargs['prefix'] + '-parcel' -            if not [k for k in kwargs['data'].keys() -                    if k.startswith(prefix_value) and kwargs['data'][k]]: -                kwargs['data'] = None -                if 'files' in kwargs: -                    kwargs.pop('files')          super(SelectedParcelForm, self).__init__(*args, **kwargs)          if parcels:              self.fields['parcel'].choices = [('', '--')] + parcels @@ -1239,9 +1230,13 @@ class OperationSourceForm(SourceForm):      def __init__(self, *args, **kwargs):          super(OperationSourceForm, self).__init__(*args, **kwargs) -        keyOrder = self.fields.keyOrder -        keyOrder.pop(keyOrder.index('index')) -        keyOrder.insert(keyOrder.index('source_type') + 1, 'index') +        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 @@ -1404,11 +1399,13 @@ class AdministrativeActOpeForm(ManageOldType, forms.Form):  class AdministrativeActModifForm(object):      def __init__(self, *args, **kwargs):          super(AdministrativeActModifForm, self).__init__(*args, **kwargs) -        self.fields.keyOrder = list(self.fields.keyOrder) -        self.fields.keyOrder.pop(self.fields.keyOrder.index( -            'index')) -        self.fields.keyOrder.insert( -            self.fields.keyOrder.index("signature_date") + 1, 'index') +        fields = OrderedDict() +        idx = self.fields.pop('index') +        for key, value in self.fields.items(): +            fields[key] = value +            if key == 'signature_date': +                fields['index'] = idx +        self.fields = fields      def clean(self):          # manage unique act ID | 
