diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-12-21 15:06:21 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-12-21 15:06:21 +0100 |
commit | 25a9131ac22ab0167f83e0ad6ce62e756e37850f (patch) | |
tree | 74b77b26a995380a6e828b6c8712aa0e5f2c00ea /archaeological_context_records/forms.py | |
parent | 09b87ba5e8f84b4d012d7472ac4841f818b606a5 (diff) | |
download | Ishtar-25a9131ac22ab0167f83e0ad6ce62e756e37850f.tar.bz2 Ishtar-25a9131ac22ab0167f83e0ad6ce62e756e37850f.zip |
Manage context record relations.
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, |