6226 |
6226 |
|
6227 |
6227 |
assert formdata.data['bo1'] == 'B2'
|
6228 |
6228 |
assert formdata.data['bo2'] == 'moreB2'
|
|
6229 |
|
|
6230 |
def test_form_edit_and_backoffice_field_condition_change(pub):
|
|
6231 |
"""
|
|
6232 |
mix bitween test_form_edit_and_backoffice_field_change
|
|
6233 |
and test_unfeed_structured_list_when_condition_changes:
|
|
6234 |
test unfeed on ConditionVars within edit context
|
|
6235 |
"""
|
|
6236 |
Workflow.wipe()
|
|
6237 |
workflow = Workflow(name='test')
|
|
6238 |
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
|
6239 |
workflow.backoffice_fields_formdef.fields = [
|
|
6240 |
fields.StringField(
|
|
6241 |
id='bo1', label='both text', type='string', varname='both_text'),
|
|
6242 |
fields.StringField(
|
|
6243 |
id='bo2', label='both more', type='string', varname='both_more')
|
|
6244 |
]
|
|
6245 |
|
|
6246 |
st1 = workflow.add_status('Status1', 'st1')
|
|
6247 |
setbo = SetBackofficeFieldsWorkflowStatusItem()
|
|
6248 |
setbo.parent = st1
|
|
6249 |
setbo.fields = [
|
|
6250 |
{'field_id': 'bo1',
|
|
6251 |
'value': '{{ form_var_listA }} vs {{ form_var_listB }}'},
|
|
6252 |
{'field_id': 'bo2',
|
|
6253 |
'value': '{{ form_var_listA_more }} vs {{ form_var_listB_more }}'}
|
|
6254 |
]
|
|
6255 |
editable = EditableWorkflowStatusItem()
|
|
6256 |
editable.id = '_editable'
|
|
6257 |
editable.by = ['_submitter']
|
|
6258 |
editable.parent = st1
|
|
6259 |
editable.status = st1.id
|
|
6260 |
st1.items = [setbo, editable]
|
|
6261 |
workflow.store()
|
|
6262 |
|
|
6263 |
items_A = [{'id': '1', 'text': 'A1', 'more':'moreA1'}]
|
|
6264 |
items_B = [{'id': '1', 'text': 'B1', 'more':'moreB1'},
|
|
6265 |
{'id': '2', 'text': 'B2', 'more':'moreB2'}]
|
|
6266 |
formdef = create_formdef()
|
|
6267 |
formdef.fields = [
|
|
6268 |
fields.ItemField(id='1', varname='choice', items=['A', 'B'],
|
|
6269 |
type='item', label='list to choice'),
|
|
6270 |
fields.ItemField(id='2', varname='listA', type='item', label='list A',
|
|
6271 |
data_source={'type': 'formula', 'value': str(items_A)},
|
|
6272 |
condition={'type': 'python',
|
|
6273 |
'value': 'form_var_choice_raw == "A"'}),
|
|
6274 |
fields.ItemField(id='3', varname='listB', type='item', label='list B',
|
|
6275 |
data_source={'type': 'formula', 'value': str(items_B)},
|
|
6276 |
condition={'type': 'python',
|
|
6277 |
'value': 'form_var_choice_raw == "B"'})
|
|
6278 |
]
|
|
6279 |
formdef.confirmation = False
|
|
6280 |
formdef.workflow_id = workflow.id
|
|
6281 |
formdef.store()
|
|
6282 |
formdef.data_class().wipe()
|
|
6283 |
|
|
6284 |
create_user(pub)
|
|
6285 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
|
6286 |
|
|
6287 |
resp.form['f1'].value = 'B'
|
|
6288 |
resp.form['f2'].value = '1'
|
|
6289 |
resp.form['f3'].value = '2'
|
|
6290 |
|
|
6291 |
resp = resp.form.submit('submit').follow()
|
|
6292 |
assert 'The form has been recorded' in resp.body
|
|
6293 |
|
|
6294 |
assert formdef.data_class().count() == 1
|
|
6295 |
formdata = formdef.data_class().select()[0]
|
|
6296 |
assert formdata.data['1'] == 'B'
|
|
6297 |
assert formdata.data.get('2') is None
|
|
6298 |
assert formdata.data['3'] == '2'
|
|
6299 |
|
|
6300 |
# check unfeed on FormPage::submitted()
|
|
6301 |
assert formdata.data['bo1'] == 'None vs B2'
|
|
6302 |
assert formdata.data['bo2'] == ' vs moreB2'
|
|
6303 |
|
|
6304 |
app = login(get_app(pub), username='foo', password='foo')
|
|
6305 |
resp = app.get('/test/%s/' % formdata.id)
|
|
6306 |
assert 'button_editable-button' in resp.body
|
|
6307 |
|
|
6308 |
resp = resp.form.submit('button_editable').follow()
|
|
6309 |
assert resp.form['f1'].value == 'B'
|
|
6310 |
resp.form['f1'].value = 'A'
|
|
6311 |
resp = resp.form.submit('submit').follow() # -> saved
|
|
6312 |
assert 'The form has been recorded' in resp.body
|
|
6313 |
|
|
6314 |
assert formdef.data_class().count() == 1
|
|
6315 |
formdata = formdef.data_class().select()[0]
|
|
6316 |
assert formdata.data['1'] == 'A'
|
|
6317 |
assert formdata.data['2'] == '1'
|
|
6318 |
assert formdata.data.get('3') is None
|
|
6319 |
|
|
6320 |
# check unfeed on FormPage::submitted_existing()
|
|
6321 |
assert formdata.data['bo1'] == 'A1 vs None'
|
|
6322 |
assert formdata.data['bo2'] == 'moreA1 vs '
|