summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit82e78630103d8e40eed2113f09ee1c69fc6841b3 (patch)
treea1032c5f387c6d1756961f8094b082da2d8d6810
parent47f0cad81d3033d69d3f3c1a576624993ec5c043 (diff)
downloadIshtar-82e78630103d8e40eed2113f09ee1c69fc6841b3.tar.bz2
Ishtar-82e78630103d8e40eed2113f09ee1c69fc6841b3.zip
Context record: can change operation (refs #3080)
-rw-r--r--archaeological_context_records/forms.py15
-rw-r--r--archaeological_context_records/views.py5
-rw-r--r--archaeological_context_records/wizards.py18
-rw-r--r--archaeological_finds/views.py2
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),