summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 3cfe13ea9..e3207a2f5 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -30,7 +30,8 @@ from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, valid_id, valid_ids
from archaeological_operations.models import Period, ArchaeologicalSite
-from archaeological_context_records.models import DatingType, DatingQuality
+from archaeological_context_records.models import DatingType, DatingQuality, \
+ ContextRecord
from archaeological_warehouse.models import Warehouse
import models
@@ -40,6 +41,38 @@ from ishtar_common.forms import FormSet, FloatField, \
from ishtar_common.forms_common import get_town_field, SourceSelect
+class RecordFormSelection(forms.Form):
+ form_label = _("Context record")
+ base_models = ['get_first_base_find']
+ associated_models = {'get_first_base_find__context_record': ContextRecord}
+ get_first_base_find__context_record = forms.IntegerField(
+ label=_(u"Context record"), required=False,
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-contextrecord'),
+ associated_model=ContextRecord),
+ validators=[valid_id(ContextRecord)])
+
+ def __init__(self, *args, **kwargs):
+ super(RecordFormSelection, self).__init__(*args, **kwargs)
+ # get the current operation and restrict search to it
+ cr_pk = None
+ if 'data' in kwargs and kwargs['data']:
+ cr_pk = kwargs['data'].get(
+ 'get_first_base_find__context_record')
+ if not cr_pk and 'initial' in kwargs and kwargs['initial']:
+ cr_pk = kwargs['initial'].get(
+ 'get_first_base_find__context_record')
+ if not cr_pk:
+ return
+ try:
+ cr = ContextRecord.objects.get(pk=cr_pk)
+ except ContextRecord.DoesNotExist:
+ return
+ widget = self.fields['get_first_base_find__context_record'].widget
+ widget.source = unicode(widget.source) + "?operation__pk={}".format(
+ cr.operation.pk)
+
+
class FindForm(forms.Form):
file_upload = True
form_label = _("Find")