workflows: fix edit carddata when formdef is not set (#51295)
This commit is contained in:
parent
2fc2d25d5b
commit
2cb7da958b
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue