summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/forms.py35
-rw-r--r--archaeological_finds/views.py1
-rw-r--r--archaeological_finds/wizards.py2
3 files changed, 36 insertions, 2 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")
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index afe6715a8..46594a2b0 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -105,6 +105,7 @@ find_search_wizard = SearchWizard.as_view([
find_modification_wizard = FindModificationWizard.as_view([
('selec-find_modification', FindFormSelection),
+ ('selecrecord-find_modification', RecordFormSelection),
('find-find_modification', FindForm),
('dating-find_modification', DatingFormSet),
('final-find_modification', FinalForm)],
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 61636aa25..fabe1039a 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -58,7 +58,7 @@ class FindWizard(Wizard):
if not current_cr or self.steps.current.startswith('select-'):
return context
context['reminders'] = (
- (_("Operation"), unicode(current_cr.operation)),
+ (_(u"Operation"), unicode(current_cr.operation)),
(_(u"Context record"), unicode(current_cr)))
return context