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 |