diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-03-18 10:30:57 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-03-18 10:30:57 +0100 |
commit | 64352a56a5ec8c0c64cf213abaa1b369606fd994 (patch) | |
tree | 6139696dd53f07dc7d52a44b00a521bdea09c4c1 /archaeological_operations/forms.py | |
parent | be4c3810ad560402a6ccee8b2c7eabbe71497989 (diff) | |
download | Ishtar-64352a56a5ec8c0c64cf213abaa1b369606fd994.tar.bz2 Ishtar-64352a56a5ec8c0c64cf213abaa1b369606fd994.zip |
Important fix: parcel rearranging on operation form when file exists
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index a144d8bd5..6ef3d5a21 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -235,15 +235,26 @@ class ParcelFormSet(FormSet): values[number] = {} values[number][field] = value + if field == 'parcel': + if not value: + continue + try: + parcel = models.Parcel.objects.get(pk=value) + except models.Parcel.DoesNotExist: + continue + ordering_keys[number] = [ + parcel.town, parcel.year, parcel.section, + parcel.parcel_number] + continue if number not in ordering_keys: ordering_keys[number] = ['', '', '', ''] if field == 'town': ordering_keys[number][0] = value - if field == 'year': + elif field == 'year': ordering_keys[number][1] = value - if field == 'section': + elif field == 'section': ordering_keys[number][2] = value - if field == 'parcel_number': + elif field == 'parcel_number': ordering_keys[number][3] = value reverse_ordering_keys = {} @@ -928,6 +939,32 @@ SelectedParcelGeneralFormSet = formset_factory(ParcelForm, can_delete=True, formset=ParcelFormSet) SelectedParcelGeneralFormSet.form_label = _("Parcels") +""" +class SelectedParcelFormSet(forms.Form): + form_label = _("Parcels") + base_model = 'parcel' + associated_models = {'parcel': models.Parcel} + parcel = forms.MultipleChoiceField( + label=_("Parcel"), required=False, choices=[], + widget=forms.CheckboxSelectMultiple) + + def __init__(self, *args, **kwargs): + parcels = None + print(kwargs) + 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(SelectedParcelFormSet, self).__init__(*args, **kwargs) + if parcels: + self.fields['parcel'].choices = [('', '--')] + parcels +""" + class RemainForm(forms.Form): form_label = _("Remain types") |