workflows: fix edit carddata when formdef is not set (#51295)

This commit is contained in:
Lauréline Guérin 2021-02-19 14:43:00 +01:00
parent 2fc2d25d5b
commit 2cb7da958b
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 31 additions and 2 deletions

View File

@ -6627,3 +6627,33 @@ def test_edit_carddata_manual_targeting(two_pubs):
assert two_pubs.loggederror_class.count() == 1
logged_error = two_pubs.loggederror_class.select()[0]
assert logged_error.summary == 'Could not find targeted "Parent" object by id 421'
# slug not or badly configured
edit.target_id = '{{ form_var_string }}' # == '1'
edit.formdef_slug = None
wf.store()
formdata = formdef.data_class()()
formdata.data = {
'0': 'Parent',
'1': 'Foo',
'2': '3',
'3': '3', # set from datasource
'4': '1',
}
# set parent
formdata.submission_context = {
'orig_object_type': 'carddef',
'orig_formdata_id': '2',
'orig_formdef_id': str(carddef.id),
}
formdata.store()
formdata.just_created()
formdata.perform_workflow()
assert carddef.data_class().count() == 7
assert carddef.data_class().get(1).data['2'] == '3' # not changed
assert carddef.data_class().get(2).data['2'] == '0'
assert carddef.data_class().get(3).data['2'] == '0'
assert carddef.data_class().get(4).data['2'] == '2'
assert carddef.data_class().get(5).data['2'] == '2'
assert carddef.data_class().get(6).data['2'] == '2'
assert carddef.data_class().get(7).data['2'] == '3'

View File

@ -18,7 +18,6 @@ from ..qommon import _
from quixote import get_publisher
from wcs.workflows import register_item_class
from wcs.carddef import CardDef
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
@ -43,7 +42,7 @@ class EditCarddataWorkflowStatusItem(CreateCarddataWorkflowStatusItem, ExternalW
return 'carddef:%s' % self.formdef_slug
def perform(self, formdata):
carddef = CardDef.get_by_urlname(self.formdef_slug)
carddef = self.formdef
if not carddef:
return