misc: record parent object class (#43361)
This commit is contained in:
parent
ecfed38818
commit
4a1d638ff9
|
@ -6284,6 +6284,7 @@ def test_backoffice_create_formdata_backoffice_submission(create_formdata):
|
||||||
|
|
||||||
assert target_formdata.submission_context == {
|
assert target_formdata.submission_context == {
|
||||||
'agent_id': str(create_formdata['admin'].id),
|
'agent_id': str(create_formdata['admin'].id),
|
||||||
|
'orig_object_type': 'formdef',
|
||||||
'orig_formdata_id': '1',
|
'orig_formdata_id': '1',
|
||||||
'orig_formdef_id': '1'
|
'orig_formdef_id': '1'
|
||||||
}
|
}
|
||||||
|
@ -6400,6 +6401,7 @@ def test_backoffice_create_formdata_map_fields_by_varname(create_formdata):
|
||||||
|
|
||||||
assert target_formdata.submission_context == {
|
assert target_formdata.submission_context == {
|
||||||
'agent_id': str(create_formdata['admin'].id),
|
'agent_id': str(create_formdata['admin'].id),
|
||||||
|
'orig_object_type': 'formdef',
|
||||||
'orig_formdata_id': '1',
|
'orig_formdata_id': '1',
|
||||||
'orig_formdef_id': '1'
|
'orig_formdef_id': '1'
|
||||||
}
|
}
|
||||||
|
|
|
@ -7799,6 +7799,7 @@ def test_create_formdata_anonymous_draft(create_formdata):
|
||||||
assert target_formdata.data.get('1').get_content() == b'foobar'
|
assert target_formdata.data.get('1').get_content() == b'foobar'
|
||||||
assert target_formdata.status == 'draft'
|
assert target_formdata.status == 'draft'
|
||||||
assert target_formdata.submission_context == {
|
assert target_formdata.submission_context == {
|
||||||
|
'orig_object_type': 'formdef',
|
||||||
'orig_formdata_id': str(create_formdata['source_formdef'].data_class().select()[0].id),
|
'orig_formdata_id': str(create_formdata['source_formdef'].data_class().select()[0].id),
|
||||||
'orig_formdef_id': str(create_formdata['source_formdef'].id),
|
'orig_formdef_id': str(create_formdata['source_formdef'].id),
|
||||||
}
|
}
|
||||||
|
@ -7850,6 +7851,7 @@ def test_create_formdata_anonymous_submitted(create_formdata):
|
||||||
assert target_formdata.data.get('1').get_content() == b'foobar'
|
assert target_formdata.data.get('1').get_content() == b'foobar'
|
||||||
assert target_formdata.status == 'wf-new'
|
assert target_formdata.status == 'wf-new'
|
||||||
assert target_formdata.submission_context == {
|
assert target_formdata.submission_context == {
|
||||||
|
'orig_object_type': 'formdef',
|
||||||
'orig_formdata_id': str(create_formdata['source_formdef'].data_class().select()[0].id),
|
'orig_formdata_id': str(create_formdata['source_formdef'].data_class().select()[0].id),
|
||||||
'orig_formdef_id': str(create_formdata['source_formdef'].id),
|
'orig_formdef_id': str(create_formdata['source_formdef'].id),
|
||||||
}
|
}
|
||||||
|
|
|
@ -2019,6 +2019,7 @@ def test_form_parent(pub):
|
||||||
child = formdef.data_class()()
|
child = formdef.data_class()()
|
||||||
child.data = {'0': 'world'}
|
child.data = {'0': 'world'}
|
||||||
child.submission_context = {
|
child.submission_context = {
|
||||||
|
'orig_object_type': 'formdef',
|
||||||
'orig_formdef_id': formdef.id,
|
'orig_formdef_id': formdef.id,
|
||||||
'orig_formdata_id': parent.id,
|
'orig_formdata_id': parent.id,
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,6 +358,25 @@ class FormData(StorableObject):
|
||||||
def get_submission_channel_label(self):
|
def get_submission_channel_label(self):
|
||||||
return self.get_submission_channels().get(self.submission_channel) or _('Web')
|
return self.get_submission_channels().get(self.submission_channel) or _('Web')
|
||||||
|
|
||||||
|
def get_parent(self):
|
||||||
|
if not self.submission_context:
|
||||||
|
return None
|
||||||
|
object_type = self.submission_context.get('orig_object_type', 'formdef')
|
||||||
|
objectdef_id = self.submission_context.get('orig_formdef_id')
|
||||||
|
objectdata_id = self.submission_context.get('orig_formdata_id')
|
||||||
|
if not (object_type and objectdef_id and objectdata_id):
|
||||||
|
return None
|
||||||
|
if object_type == 'carddef':
|
||||||
|
from .carddef import CardDef
|
||||||
|
objectdef_class = CardDef
|
||||||
|
else:
|
||||||
|
from .formdef import FormDef
|
||||||
|
objectdef_class = FormDef
|
||||||
|
try:
|
||||||
|
return objectdef_class.get(objectdef_id).data_class().get(objectdata_id)
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
def just_created(self):
|
def just_created(self):
|
||||||
self.receipt_time = time.localtime()
|
self.receipt_time = time.localtime()
|
||||||
self.status = 'wf-%s' % self.formdef.workflow.possible_status[0].id
|
self.status = 'wf-%s' % self.formdef.workflow.possible_status[0].id
|
||||||
|
|
|
@ -412,16 +412,7 @@ class LazyFormData(LazyFormDef):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parent(self):
|
def parent(self):
|
||||||
if not self._formdata.submission_context:
|
formdata = self._formdata.get_parent()
|
||||||
return None
|
|
||||||
if 'orig_formdef_id' not in self._formdata.submission_context:
|
|
||||||
return None
|
|
||||||
if 'orig_formdata_id' not in self._formdata.submission_context:
|
|
||||||
return None
|
|
||||||
formdef = FormDef.get(self._formdata.submission_context['orig_formdef_id'], ignore_errors=True)
|
|
||||||
if formdef is None:
|
|
||||||
return None
|
|
||||||
formdata = formdef.data_class().get(self._formdata.submission_context['orig_formdata_id'], ignore_errors=True)
|
|
||||||
if formdata is None:
|
if formdata is None:
|
||||||
return None
|
return None
|
||||||
return formdata.get_substitution_variables()
|
return formdata.get_substitution_variables()
|
||||||
|
|
|
@ -323,6 +323,7 @@ class CreateFormdataWorkflowStatusItem(WorkflowStatusItem):
|
||||||
if self.backoffice_submission and get_request() and get_request().user is not None:
|
if self.backoffice_submission and get_request() and get_request().user is not None:
|
||||||
new_formdata.submission_context['agent_id'] = str(get_request().user.id)
|
new_formdata.submission_context['agent_id'] = str(get_request().user.id)
|
||||||
|
|
||||||
|
new_formdata.submission_context['orig_object_type'] = formdata.formdef.xml_root_node
|
||||||
new_formdata.submission_context['orig_formdef_id'] = str(formdata.formdef.id)
|
new_formdata.submission_context['orig_formdef_id'] = str(formdata.formdef.id)
|
||||||
new_formdata.submission_context['orig_formdata_id'] = str(formdata.id)
|
new_formdata.submission_context['orig_formdata_id'] = str(formdata.id)
|
||||||
new_formdata.data = {}
|
new_formdata.data = {}
|
||||||
|
|
|
@ -80,6 +80,7 @@ class ResubmitWorkflowStatusItem(WorkflowStatusItem):
|
||||||
new_formdata.backoffice_submission = get_request().is_in_backoffice()
|
new_formdata.backoffice_submission = get_request().is_in_backoffice()
|
||||||
if not new_formdata.submission_context:
|
if not new_formdata.submission_context:
|
||||||
new_formdata.submission_context = {}
|
new_formdata.submission_context = {}
|
||||||
|
new_formdata.submission_context['orig_object_type'] = formdata.formdef.xml_root_node
|
||||||
new_formdata.submission_context['orig_formdef_id'] = formdata.formdef.id
|
new_formdata.submission_context['orig_formdef_id'] = formdata.formdef.id
|
||||||
new_formdata.submission_context['orig_formdata_id'] = formdata.id
|
new_formdata.submission_context['orig_formdata_id'] = formdata.id
|
||||||
new_formdata.data = {}
|
new_formdata.data = {}
|
||||||
|
|
Loading…
Reference in New Issue