diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-06 10:36:40 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-06 10:36:40 +0200 |
commit | 284c18281b50c3c33f4515020568aa75c913f46e (patch) | |
tree | a1032c5f387c6d1756961f8094b082da2d8d6810 | |
parent | bb748e6be9ccd3b70134e050be931eda31b6e946 (diff) | |
download | Ishtar-284c18281b50c3c33f4515020568aa75c913f46e.tar.bz2 Ishtar-284c18281b50c3c33f4515020568aa75c913f46e.zip |
Context record: can change operation (refs #3080)
-rw-r--r-- | archaeological_context_records/forms.py | 15 | ||||
-rw-r--r-- | archaeological_context_records/views.py | 5 | ||||
-rw-r--r-- | archaeological_context_records/wizards.py | 18 | ||||
-rw-r--r-- | archaeological_finds/views.py | 2 |
4 files changed, 37 insertions, 3 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index 462300317..225b49bfb 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -43,6 +43,18 @@ from archaeological_operations.forms import OperationSelect, ParcelField,\ RecordRelationsForm as OpeRecordRelationsForm +class OperationFormSelection(forms.Form): + form_label = _("Operation") + associated_models = {'operation': Operation} + currents = {'operation': Operation} + operation = forms.IntegerField( + label=_(u"Operation"), required=False, + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-operation'), + associated_model=Operation), + validators=[valid_id(Operation)]) + + class RecordSelect(TableSelect): label = forms.CharField(label=_(u"ID"), max_length=100) parcel__town = get_town_field() @@ -149,6 +161,9 @@ class RecordFormGeneral(ManageOldType, forms.Form): 'context_record' in kwargs['data']): if 'operation' in kwargs['data']: operation = kwargs['data']['operation'] + # force operation modification + kwargs['data'][kwargs['prefix'] + '-operation_id'] = \ + operation.id if 'context_record' in kwargs['data'] and \ kwargs['data']['context_record']: operation = kwargs['data']['context_record'].operation diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 3e808c06b..4fd945187 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -130,10 +130,11 @@ record_creation_wizard = RecordWizard.as_view([ record_modification_wizard = RecordModifWizard.as_view([ ('selec-record_modification', RecordFormSelection), + ('operation-record_modification', OperationFormSelection), ('general-record_modification', RecordFormGeneral), ('datings-record_modification', DatingFormSet), ('interpretation-record_modification', RecordFormInterpretation), - ('relations-record_creation', RecordRelationsFormSet), + ('relations-record_modification', RecordRelationsFormSet), ('final-record_modification', FinalForm)], label=_(u"Context record modification"), url_name='record_modification',) @@ -144,7 +145,7 @@ def record_modify(request, pk): RecordModifWizard.session_set_value( request, 'selec-record_modification', 'pk', pk, reset=True) return redirect(reverse('record_modification', - kwargs={'step': 'general-record_modification'})) + kwargs={'step': 'operation-record_modification'})) record_deletion_wizard = RecordDeletionWizard.as_view([ ('selec-record_deletion', RecordFormSelection), diff --git a/archaeological_context_records/wizards.py b/archaeological_context_records/wizards.py index 2449b400e..2780acfbc 100644 --- a/archaeological_context_records/wizards.py +++ b/archaeological_context_records/wizards.py @@ -52,6 +52,15 @@ class RecordWizard(Wizard): return current_ope except(TypeError, ValueError, ObjectDoesNotExist): pass + else: + ope_form_key = 'operation-' + self.url_name + try: + idx = int(self.session_get_value( + ope_form_key, 'operation')) + current_ope = models.Operation.objects.get(pk=idx) + return current_ope + except(TypeError, ValueError, ObjectDoesNotExist): + pass current_cr = self.get_current_object() if current_cr: return current_cr.operation @@ -92,6 +101,15 @@ class RecordWizard(Wizard): data['operation'] = current_obj except(TypeError, ValueError, ObjectDoesNotExist): pass + elif step.endswith('_modification'): + ope_form_key = 'operation-' + self.url_name + try: + idx = int(self.session_get_value(ope_form_key, + 'operation')) + current_obj = models.Operation.objects.get(pk=idx) + data['operation'] = current_obj + except(TypeError, ValueError, ObjectDoesNotExist): + pass else: current_object = self.get_current_object() data['context_record'] = current_object diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index a449a2115..57b2b7665 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -136,7 +136,7 @@ def find_modify(request, pk): request, 'selec-find_modification', 'pk', pk, reset=True) return redirect( reverse('find_modification', - kwargs={'step': 'find-find_modification'})) + kwargs={'step': 'selecrecord-find_modification'})) find_deletion_wizard = FindDeletionWizard.as_view([ ('selec-find_deletion', FindFormSelection), |