misc: handle adding a block line in workflow forms in front (#53607)
This commit is contained in:
parent
677ef4f88b
commit
16ef227eb0
|
@ -13,7 +13,7 @@ from wcs.categories import Category
|
||||||
from wcs.data_sources import NamedDataSource
|
from wcs.data_sources import NamedDataSource
|
||||||
from wcs.formdef import FormDef
|
from wcs.formdef import FormDef
|
||||||
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
||||||
from wcs.workflows import Workflow
|
from wcs.workflows import JumpOnSubmitWorkflowStatusItem, Workflow
|
||||||
|
|
||||||
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
||||||
from .test_all import create_user
|
from .test_all import create_user
|
||||||
|
@ -1517,3 +1517,66 @@ def test_block_subfields_display_locations(pub, blocks_feature):
|
||||||
assert 'Blah Title' not in resp.text
|
assert 'Blah Title' not in resp.text
|
||||||
assert 'Blah Subtitle' not in resp.text
|
assert 'Blah Subtitle' not in resp.text
|
||||||
assert 'Blah Comment' not in resp.text
|
assert 'Blah Comment' not in resp.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_workflow_display_form_with_block_add(pub):
|
||||||
|
user = create_user(pub)
|
||||||
|
|
||||||
|
block = BlockDef()
|
||||||
|
block.name = 'foobar2'
|
||||||
|
block.fields = [
|
||||||
|
fields.StringField(id='123', required=True, label='Test', type='string'),
|
||||||
|
]
|
||||||
|
block.store()
|
||||||
|
|
||||||
|
wf = Workflow.get_default_workflow()
|
||||||
|
wf.id = '2'
|
||||||
|
wf.store()
|
||||||
|
wf = Workflow.get(wf.id)
|
||||||
|
status = wf.get_status('new')
|
||||||
|
status.items = []
|
||||||
|
display_form = FormWorkflowStatusItem()
|
||||||
|
display_form.id = '_display_form'
|
||||||
|
display_form.by = ['_submitter']
|
||||||
|
display_form.varname = 'blah'
|
||||||
|
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
||||||
|
display_form.formdef.fields = [
|
||||||
|
fields.StringField(id='1', label='Test', varname='str', type='string', required=True),
|
||||||
|
fields.BlockField(id='2', label='Blocks', type='block:foobar2', varname='data', max_items=3),
|
||||||
|
]
|
||||||
|
status.items.append(display_form)
|
||||||
|
display_form.parent = status
|
||||||
|
|
||||||
|
jump = JumpOnSubmitWorkflowStatusItem()
|
||||||
|
jump.id = '_jump'
|
||||||
|
jump.status = 'accepted'
|
||||||
|
status.items.append(jump)
|
||||||
|
jump.parent = status
|
||||||
|
|
||||||
|
wf.store()
|
||||||
|
|
||||||
|
formdef = FormDef()
|
||||||
|
formdef.name = 'form title'
|
||||||
|
formdef.fields = []
|
||||||
|
formdef.workflow_id = wf.id
|
||||||
|
formdef.store()
|
||||||
|
|
||||||
|
formdef.data_class().wipe()
|
||||||
|
formdata = formdef.data_class()()
|
||||||
|
formdata.user_id = user.id
|
||||||
|
formdata.just_created()
|
||||||
|
formdata.status = 'wf-new'
|
||||||
|
formdata.store()
|
||||||
|
|
||||||
|
resp = login(get_app(pub), username='foo', password='foo').get(formdata.get_url())
|
||||||
|
resp.form['fblah_1'] = 'blah'
|
||||||
|
resp.form['fblah_2$element0$f123'] = 'foo'
|
||||||
|
resp = resp.form.submit('fblah_2$add_element')
|
||||||
|
resp.form['fblah_2$element1$f123'] = 'bar'
|
||||||
|
resp = resp.form.submit('submit')
|
||||||
|
|
||||||
|
assert formdef.data_class().get(formdata.id).workflow_data == {
|
||||||
|
'blah_var_data': 'foobar2, foobar2',
|
||||||
|
'blah_var_data_raw': {'data': [{'123': 'foo'}, {'123': 'bar'}], 'schema': {'123': 'string'}},
|
||||||
|
'blah_var_str': 'blah',
|
||||||
|
}
|
||||||
|
|
|
@ -257,9 +257,14 @@ class FormStatusPage(Directory, FormTemplateMixin):
|
||||||
|
|
||||||
user = get_request().user
|
user = get_request().user
|
||||||
form = self.get_workflow_form(user)
|
form = self.get_workflow_form(user)
|
||||||
response = self.check_submitted_form(form)
|
try:
|
||||||
if response:
|
response = self.check_submitted_form(form)
|
||||||
return response
|
except RedisplayFormException:
|
||||||
|
# don't display errors after "add block" button has been clicked.
|
||||||
|
form.clear_errors()
|
||||||
|
else:
|
||||||
|
if response:
|
||||||
|
return response
|
||||||
|
|
||||||
if form:
|
if form:
|
||||||
form.add_media()
|
form.add_media()
|
||||||
|
|
Loading…
Reference in New Issue