diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2016-01-10 15:35:51 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2016-01-10 15:35:51 +0100 |
commit | 11d7e76203e13a6d4c2a0c9aa29bd2d1dd86f5b6 (patch) | |
tree | 8d8e7c09faf179b2fed07878d1cf450a245a78d0 /archaeological_context_records/forms.py | |
parent | 19fcd922361b045894c0eeb56e095d785299909e (diff) | |
parent | 2c063aace94e5a9f3b5dc596e4a502ef062db059 (diff) | |
download | Ishtar-11d7e76203e13a6d4c2a0c9aa29bd2d1dd86f5b6.tar.bz2 Ishtar-11d7e76203e13a6d4c2a0c9aa29bd2d1dd86f5b6.zip |
Merge branch 'master' into master-land-planner-2999
Diffstat (limited to 'archaeological_context_records/forms.py')
-rw-r--r-- | archaeological_context_records/forms.py | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index df5a83539..59f683620 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -36,7 +36,8 @@ from ishtar_common import widgets from ishtar_common.forms import FinalForm, FormSet, \ reverse_lazy, get_form_selection, TableSelect from ishtar_common.forms_common import get_town_field, SourceSelect -from archaeological_operations.forms import OperationSelect, ParcelField +from archaeological_operations.forms import OperationSelect, ParcelField,\ + RecordRelationsForm as OpeRecordRelationsForm class RecordSelect(TableSelect): @@ -181,6 +182,35 @@ DatingFormSet = formset_factory(DatingForm, can_delete=True, DatingFormSet.form_label = _("Dating") +class RecordRelationsForm(OpeRecordRelationsForm): + current_model = models.RelationType + current_related_model = models.ContextRecord + associated_models = {'right_record': models.ContextRecord, + 'relation_type': models.RelationType} + right_record = forms.ChoiceField( + label=_(u"Context record"), choices=[], required=False) + + def __init__(self, *args, **kwargs): + crs = None + if 'data' in kwargs and 'CONTEXT_RECORDS' in kwargs['data']: + crs = kwargs['data']['CONTEXT_RECORDS'] + # clean data if not "real" data + prefix_value = kwargs['prefix'] + '-right_record' + 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(RecordRelationsForm, self).__init__(*args, **kwargs) + self.fields['relation_type'].choices = \ + models.RelationType.get_types() + if crs: + self.fields['right_record'].choices = [('', '-' * 2)] + crs + +RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True) +RecordRelationsFormSet.form_label = _(u"Relations") + + class RecordFormInterpretation(forms.Form): form_label = _("Interpretation") associated_models = {'activity': models.ActivityType, |