diff options
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, | 
