summaryrefslogtreecommitdiff
path: root/archaeological_context_records/forms.py
diff options
context:
space:
mode:
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
commit25a9131ac22ab0167f83e0ad6ce62e756e37850f (patch)
tree74b77b26a995380a6e828b6c8712aa0e5f2c00ea /archaeological_context_records/forms.py
parent09b87ba5e8f84b4d012d7472ac4841f818b606a5 (diff)
downloadIshtar-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.py34
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,