5593 |
5593 |
|
5594 |
5594 |
assert LoggedError.count() == 1
|
5595 |
5595 |
assert LoggedError.select()[0].get_formdata().data == {'1': 'plop'}
|
|
5596 |
|
|
5597 |
|
|
5598 |
def test_lazy_eval_with_conditional_workflow_form(pub):
|
|
5599 |
role = Role(name='foobar')
|
|
5600 |
role.store()
|
|
5601 |
user = create_user(pub)
|
|
5602 |
|
|
5603 |
app = login(get_app(pub))
|
|
5604 |
|
|
5605 |
FormDef.wipe()
|
|
5606 |
|
|
5607 |
wf = Workflow(name='lazy backoffic form')
|
|
5608 |
wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf)
|
|
5609 |
wf.backoffice_fields_formdef.fields = [
|
|
5610 |
fields.StringField(id='bo1', label='Foor Bar', varname='foo_bar'),
|
|
5611 |
]
|
|
5612 |
st1 = wf.add_status('New', 'new')
|
|
5613 |
st2 = wf.add_status('Choose', 'choice')
|
|
5614 |
st3 = wf.add_status('Done', 'done')
|
|
5615 |
|
|
5616 |
display_form = FormWorkflowStatusItem()
|
|
5617 |
display_form.id = '_display_form'
|
|
5618 |
display_form.by = [user.roles[0]]
|
|
5619 |
display_form.varname = 'local'
|
|
5620 |
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
|
|
5621 |
display_form.formdef.fields = [
|
|
5622 |
fields.StringField(id='1', label='Test', varname='str', type='string', required=True),
|
|
5623 |
fields.StringField(id='2', label='Test 2', varname='str2', type='string',
|
|
5624 |
condition={'type': 'django', 'value': 'local_var_str'})
|
|
5625 |
]
|
|
5626 |
display_form.parent = st1
|
|
5627 |
|
|
5628 |
submit_choice = JumpOnSubmitWorkflowStatusItem()
|
|
5629 |
submit_choice.parent = st1
|
|
5630 |
submit_choice.status = st2.id
|
|
5631 |
st1.items.append(display_form)
|
|
5632 |
st1.items.append(submit_choice)
|
|
5633 |
|
|
5634 |
setbo = SetBackofficeFieldsWorkflowStatusItem()
|
|
5635 |
setbo.parent = st2
|
|
5636 |
setbo.fields = [{'field_id': 'bo1', 'value': '{% firstof local_var_str2 local_var_str1 %}'}]
|
|
5637 |
|
|
5638 |
jump = JumpWorkflowStatusItem()
|
|
5639 |
jump.condition = {'type': 'django', 'value': "form_var_foo_bar == 'go'"}
|
|
5640 |
jump.status = 'done'
|
|
5641 |
jump.parent = st2
|
|
5642 |
st2.items.append(jump)
|
|
5643 |
st2.items.append(setbo)
|
|
5644 |
wf.store()
|
|
5645 |
|
|
5646 |
formdef = FormDef()
|
|
5647 |
formdef.name = 'test'
|
|
5648 |
formdef.fields = [
|
|
5649 |
fields.StringField(id='0', label='Foo', varname='foo')
|
|
5650 |
]
|
|
5651 |
formdef.workflow_roles = {'_receiver': role.id}
|
|
5652 |
formdef.workflow_id = wf.id
|
|
5653 |
formdef.store()
|
|
5654 |
formdata = formdef.data_class()()
|
|
5655 |
formdata.just_created()
|
|
5656 |
formdata.data = {
|
|
5657 |
'0': 'test'
|
|
5658 |
}
|
|
5659 |
formdata.store()
|
|
5660 |
|
|
5661 |
resp = app.get(formdata.get_url(backoffice=True))
|
|
5662 |
resp.forms[0]['f1'] = 'f1 value'
|
|
5663 |
resp.forms[0]['f2'] = 'go'
|
|
5664 |
resp = resp.forms[0].submit()
|
|
5665 |
|
|
5666 |
context = pub.substitutions.get_context_variables(mode='lazy')
|
|
5667 |
assert context['form_var_foo_bar'] == 'go'
|
|
5668 |
assert formdata.select()[0].status == 'wf-done'
|