diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-03-16 19:48:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-05-09 20:58:16 +0200 |
commit | a850add6d883d0a0daed8d1c74da5ace6572431e (patch) | |
tree | 67b2bd213c896327e2fac50e711f5f28a39ddb64 /archaeological_finds | |
parent | 2728c5a51c474429bea741dc469fd87ed48cee32 (diff) | |
download | Ishtar-a850add6d883d0a0daed8d1c74da5ace6572431e.tar.bz2 Ishtar-a850add6d883d0a0daed8d1c74da5ace6572431e.zip |
Changing context record of a find (refs #3080)
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/forms.py | 35 | ||||
-rw-r--r-- | archaeological_finds/views.py | 1 | ||||
-rw-r--r-- | archaeological_finds/wizards.py | 2 |
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 |