0002-workflow-prefix-fields-in-FormWorkflowStatusItem-138.patch
tests/backoffice_pages/test_all.py | ||
---|---|---|
3654 | 3654 |
break |
3655 | 3655 |
app = login(get_app(pub)) |
3656 | 3656 |
resp = app.get(formdata.get_url(backoffice=True)) |
3657 |
assert 'f1' in resp.form.fields |
|
3658 |
resp.form['f1'] = 'blah' |
|
3657 |
assert 'fblah_1' in resp.form.fields
|
|
3658 |
resp.form['fblah_1'] = 'blah'
|
|
3659 | 3659 |
# don't fill required radio button |
3660 | 3660 |
resp = resp.form.submit('submit') |
3661 | 3661 |
assert formdef.data_class().get(formdata.id).status == 'wf-new' |
3662 | 3662 |
assert 'There were errors processing your form.' in resp.text |
3663 |
resp.form['f2'] = 'c' |
|
3663 |
resp.form['fblah_2'] = 'c'
|
|
3664 | 3664 |
resp = resp.form.submit('submit') |
3665 | 3665 |
assert formdef.data_class().get(formdata.id).status == 'wf-accepted' |
3666 | 3666 |
assert formdef.data_class().get(formdata.id).workflow_data == { |
... | ... | |
3704 | 3704 |
break |
3705 | 3705 |
app = login(get_app(pub)) |
3706 | 3706 |
resp = app.get(formdata.get_url(backoffice=True)) |
3707 |
assert 'f1' in resp.form.fields |
|
3708 |
assert 'f2' in resp.form.fields |
|
3707 |
assert 'fblah_1' in resp.form.fields
|
|
3708 |
assert 'fblah_2' in resp.form.fields
|
|
3709 | 3709 | |
3710 | 3710 |
# check with static condition |
3711 | 3711 |
display_form.formdef.fields = [ |
... | ... | |
3717 | 3717 |
wf.store() |
3718 | 3718 | |
3719 | 3719 |
resp = login(get_app(pub)).get(formdata.get_url(backoffice=True)) |
3720 |
assert 'f1' in resp.form.fields |
|
3721 |
assert 'f2' not in resp.form.fields |
|
3720 |
assert 'fblah_1' in resp.form.fields
|
|
3721 |
assert 'fblah_2' not in resp.form.fields
|
|
3722 | 3722 | |
3723 | 3723 |
# check condition based on formdata |
3724 | 3724 |
display_form.formdef.fields = [ |
... | ... | |
3730 | 3730 |
wf.store() |
3731 | 3731 | |
3732 | 3732 |
resp = login(get_app(pub)).get(formdata.get_url(backoffice=True)) |
3733 |
assert 'f1' in resp.form.fields |
|
3734 |
assert 'f2' in resp.form.fields |
|
3733 |
assert 'fblah_1' in resp.form.fields
|
|
3734 |
assert 'fblah_2' in resp.form.fields
|
|
3735 | 3735 | |
3736 | 3736 |
display_form.formdef.fields = [ |
3737 | 3737 |
fields.StringField(id='1', label='Test', varname='str', type='string', required=True), |
... | ... | |
3742 | 3742 |
wf.store() |
3743 | 3743 | |
3744 | 3744 |
resp = login(get_app(pub)).get(formdata.get_url(backoffice=True)) |
3745 |
assert 'f1' in resp.form.fields |
|
3746 |
assert 'f2' in resp.form.fields |
|
3745 |
assert 'fblah_1' in resp.form.fields
|
|
3746 |
assert 'fblah_2' in resp.form.fields
|
|
3747 | 3747 | |
3748 | 3748 |
# check with live conditions |
3749 | 3749 |
display_form.formdef.fields = [ |
... | ... | |
3755 | 3755 |
wf.store() |
3756 | 3756 | |
3757 | 3757 |
resp = login(get_app(pub)).get(formdata.get_url(backoffice=True)) |
3758 |
assert 'f1' in resp.form.fields |
|
3759 |
assert 'f2' in resp.form.fields |
|
3760 |
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true' |
|
3761 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none' |
|
3758 |
assert 'fblah_1' in resp.form.fields
|
|
3759 |
assert 'fblah_2' in resp.form.fields
|
|
3760 |
assert resp.html.find('div', {'data-field-id': 'blah_1'}).attrs['data-live-source'] == 'true'
|
|
3761 |
assert resp.html.find('div', {'data-field-id': 'blah_2'}).attrs.get('style') == 'display: none'
|
|
3762 | 3762 |
live_url = resp.html.find('form').attrs['data-live-url'] |
3763 | 3763 |
assert '/backoffice/' in live_url |
3764 |
resp.form['f1'] = '' |
|
3764 |
resp.form['fblah_1'] = ''
|
|
3765 | 3765 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
3766 |
assert live_resp.json['result']['1']['visible'] |
|
3767 |
assert not live_resp.json['result']['2']['visible'] |
|
3766 |
assert live_resp.json['result']['blah_1']['visible']
|
|
3767 |
assert not live_resp.json['result']['blah_2']['visible']
|
|
3768 | 3768 | |
3769 |
resp.form['f1'] = 'xxx' |
|
3769 |
resp.form['fblah_1'] = 'xxx'
|
|
3770 | 3770 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
3771 |
assert live_resp.json['result']['1']['visible'] |
|
3772 |
assert live_resp.json['result']['2']['visible'] |
|
3771 |
assert live_resp.json['result']['blah_1']['visible']
|
|
3772 |
assert live_resp.json['result']['blah_2']['visible']
|
|
3773 | 3773 | |
3774 | 3774 |
# check submit doesn't work |
3775 | 3775 |
resp = resp.form.submit('submit') |
3776 | 3776 |
assert 'There were errors processing your form.' in resp.text |
3777 | 3777 | |
3778 |
resp.form['f1'] = 'xxx2' |
|
3778 |
resp.form['fblah_1'] = 'xxx2'
|
|
3779 | 3779 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
3780 |
assert live_resp.json['result']['1']['visible'] |
|
3781 |
assert not live_resp.json['result']['2']['visible'] |
|
3780 |
assert live_resp.json['result']['blah_1']['visible']
|
|
3781 |
assert not live_resp.json['result']['blah_2']['visible']
|
|
3782 | 3782 | |
3783 | 3783 |
# check submit does work when second field is hidden |
3784 | 3784 |
resp = resp.form.submit('submit').follow() |
... | ... | |
3832 | 3832 |
urlopen.side_effect = side_effect |
3833 | 3833 | |
3834 | 3834 |
resp = login(app).get(formdata.get_url(backoffice=True)) |
3835 |
assert 'f1' in resp.form.fields |
|
3836 |
assert 'f2' in resp.form.fields |
|
3837 |
assert resp.form.fields['f2'][0].options == [(u'A', False, u'hello'), (u'B', False, u'world')] |
|
3835 |
assert 'fblah_1' in resp.form.fields
|
|
3836 |
assert 'fblah_2' in resp.form.fields
|
|
3837 |
assert resp.form.fields['fblah_2'][0].options == [(u'A', False, u'hello'), (u'B', False, u'world')]
|
|
3838 | 3838 | |
3839 | 3839 |
live_url = resp.html.find('form').attrs['data-live-url'] |
3840 |
resp.form['f1'] = 'toto' |
|
3841 |
live_resp = app.post(live_url + '?modified_field_id=1', params=resp.form.submit_fields()) |
|
3842 |
assert live_resp.json['result']['2']['items'] == [{u'text': u'hello', u'id': u'C'}, {u'text': u'world', u'id': u'D'}] |
|
3840 |
resp.form['fblah_1'] = 'toto'
|
|
3841 |
live_resp = app.post(live_url + '?modified_field_id=blah_1', params=resp.form.submit_fields())
|
|
3842 |
assert live_resp.json['result']['blah_2']['items'] == [{u'text': u'hello', u'id': u'C'}, {u'text': u'world', u'id': u'D'}]
|
|
3843 | 3843 | |
3844 | 3844 | |
3845 | 3845 |
def test_backoffice_criticality_in_formdef_listing(pub): |
... | ... | |
5211 | 5211 |
formdata.store() |
5212 | 5212 | |
5213 | 5213 |
resp = app.get(formdata.get_url(backoffice=True)) |
5214 |
resp.forms[0]['f1'] = 'a' |
|
5215 |
resp.forms[0]['f2'] = 'b' |
|
5214 |
resp.forms[0]['flocal_1'] = 'a'
|
|
5215 |
resp.forms[0]['flocal_2'] = 'b'
|
|
5216 | 5216 |
resp = resp.forms[0].submit() |
5217 | 5217 |
assert formdata.select()[0].status == 'wf-done' |
5218 | 5218 |
tests/form_pages/test_all.py | ||
---|---|---|
5893 | 5893 |
formdata = formdef.data_class().select()[0] |
5894 | 5894 | |
5895 | 5895 |
resp = app.get(formdata.get_url()) |
5896 |
assert resp.form['f1'].attrs['aria-required'] == 'true' |
|
5896 |
assert resp.form['fxxx_1'].attrs['aria-required'] == 'true'
|
|
5897 | 5897 |
assert 'button-action-1' in resp.form.fields |
5898 | 5898 |
resp = resp.form.submit('button-action-1') |
5899 | 5899 | |
... | ... | |
6497 | 6497 |
assert 'The form has been recorded' in resp.text |
6498 | 6498 | |
6499 | 6499 |
assert 'data-live-url' in resp.html.find('form').attrs |
6500 |
assert 'f1' in resp.form.fields |
|
6501 |
assert 'f2' in resp.form.fields |
|
6502 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs['data-live-source'] == 'true' |
|
6503 |
assert resp.html.find('div', {'data-field-id': '3'}).find('select') |
|
6500 |
assert 'fxxx_1' in resp.form.fields
|
|
6501 |
assert 'fxxx_2' in resp.form.fields
|
|
6502 |
assert resp.html.find('div', {'data-field-id': 'xxx_2'}).attrs['data-live-source'] == 'true'
|
|
6503 |
assert resp.html.find('div', {'data-field-id': 'xxx_3'}).find('select')
|
|
6504 | 6504 |
resp = resp.form.submit('submit') # submit with error, to check <form> attributes |
6505 | 6505 |
assert 'data-live-url' in resp.html.find('form').attrs |
6506 |
assert 'f1' in resp.form.fields |
|
6507 |
assert 'f2' in resp.form.fields |
|
6508 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs['data-live-source'] == 'true' |
|
6509 |
assert resp.html.find('div', {'data-field-id': '3'}).find('select') |
|
6510 |
resp.form['f1'] = 'hello' |
|
6506 |
assert 'fxxx_1' in resp.form.fields
|
|
6507 |
assert 'fxxx_2' in resp.form.fields
|
|
6508 |
assert resp.html.find('div', {'data-field-id': 'xxx_2'}).attrs['data-live-source'] == 'true'
|
|
6509 |
assert resp.html.find('div', {'data-field-id': 'xxx_3'}).find('select')
|
|
6510 |
resp.form['fxxx_1'] = 'hello'
|
|
6511 | 6511 |
live_resp = app.post('/test/1/live', params=resp.form.submit_fields()) |
6512 |
assert live_resp.json['result']['1']['visible'] |
|
6513 |
assert live_resp.json['result']['2']['visible'] |
|
6514 |
assert live_resp.json['result']['3']['visible'] |
|
6515 |
assert not 'items' in live_resp.json['result']['3'] |
|
6516 |
resp.form['f2'] = 'plop' |
|
6517 |
live_resp = app.post('/test/1/live?modified_field_id=2', params=resp.form.submit_fields()) |
|
6518 |
assert live_resp.json['result']['1']['visible'] |
|
6519 |
assert live_resp.json['result']['2']['visible'] |
|
6520 |
assert live_resp.json['result']['3']['visible'] |
|
6521 |
assert 'items' in live_resp.json['result']['3'] |
|
6522 |
assert len(live_resp.json['result']['3']['items']) > 0 |
|
6523 | ||
6524 |
resp.form['f3'].options = [] |
|
6525 |
for item in live_resp.json['result']['3']['items']: |
|
6512 |
assert live_resp.json['result']['xxx_1']['visible']
|
|
6513 |
assert live_resp.json['result']['xxx_2']['visible']
|
|
6514 |
assert live_resp.json['result']['xxx_3']['visible']
|
|
6515 |
assert not 'items' in live_resp.json['result']['xxx_3']
|
|
6516 |
resp.form['fxxx_2'] = 'plop'
|
|
6517 |
live_resp = app.post('/test/1/live?modified_field_id=xxx_2', params=resp.form.submit_fields())
|
|
6518 |
assert live_resp.json['result']['xxx_1']['visible']
|
|
6519 |
assert live_resp.json['result']['xxx_2']['visible']
|
|
6520 |
assert live_resp.json['result']['xxx_3']['visible']
|
|
6521 |
assert 'items' in live_resp.json['result']['xxx_3']
|
|
6522 |
assert len(live_resp.json['result']['xxx_3']['items']) > 0
|
|
6523 | ||
6524 |
resp.form['fxxx_3'].options = []
|
|
6525 |
for item in live_resp.json['result']['xxx_3']['items']:
|
|
6526 | 6526 |
# simulate javascript filling the <select> |
6527 |
resp.form['f3'].options.append((item['id'], False, item['text'])) |
|
6528 |
resp.form['f3'] = 'a' |
|
6527 |
resp.form['fxxx_3'].options.append((item['id'], False, item['text']))
|
|
6528 |
resp.form['fxxx_3'] = 'a'
|
|
6529 | 6529 | |
6530 | 6530 |
resp = resp.form.submit('submit') |
6531 | 6531 |
assert 'invalid value selected' not in resp |
... | ... | |
7049 | 7049 | |
7050 | 7050 |
app = login(get_app(pub), username='foo', password='foo') |
7051 | 7051 |
resp = app.get(formdata.get_url(backoffice=False)) |
7052 |
assert 'f1' in resp.form.fields |
|
7053 |
assert 'f2' in resp.form.fields |
|
7052 |
assert 'fblah_1' in resp.form.fields
|
|
7053 |
assert 'fblah_2' in resp.form.fields
|
|
7054 | 7054 | |
7055 | 7055 |
# check with static condition |
7056 | 7056 |
display_form.formdef.fields = [ |
... | ... | |
7062 | 7062 |
wf.store() |
7063 | 7063 | |
7064 | 7064 |
resp = login(get_app(pub), username='foo', password='foo').get(formdata.get_url(backoffice=False)) |
7065 |
assert 'f1' in resp.form.fields |
|
7066 |
assert 'f2' not in resp.form.fields |
|
7065 |
assert 'fblah_1' in resp.form.fields
|
|
7066 |
assert 'fblah_2' not in resp.form.fields
|
|
7067 | 7067 | |
7068 | 7068 |
# check condition based on formdata |
7069 | 7069 |
display_form.formdef.fields = [ |
... | ... | |
7075 | 7075 |
wf.store() |
7076 | 7076 | |
7077 | 7077 |
resp = login(get_app(pub), username='foo', password='foo').get(formdata.get_url(backoffice=False)) |
7078 |
assert 'f1' in resp.form.fields |
|
7079 |
assert 'f2' in resp.form.fields |
|
7078 |
assert 'fblah_1' in resp.form.fields
|
|
7079 |
assert 'fblah_2' in resp.form.fields
|
|
7080 | 7080 | |
7081 | 7081 |
display_form.formdef.fields = [ |
7082 | 7082 |
fields.StringField(id='1', label='Test', varname='str', type='string', required=True), |
... | ... | |
7087 | 7087 |
wf.store() |
7088 | 7088 | |
7089 | 7089 |
resp = login(get_app(pub), username='foo', password='foo').get(formdata.get_url(backoffice=False)) |
7090 |
assert 'f1' in resp.form.fields |
|
7091 |
assert 'f2' in resp.form.fields |
|
7090 |
assert 'fblah_1' in resp.form.fields
|
|
7091 |
assert 'fblah_2' in resp.form.fields
|
|
7092 | 7092 | |
7093 | 7093 |
# check with live conditions |
7094 | 7094 |
display_form.formdef.fields = [ |
... | ... | |
7100 | 7100 |
wf.store() |
7101 | 7101 | |
7102 | 7102 |
resp = login(get_app(pub), username='foo', password='foo').get(formdata.get_url(backoffice=False)) |
7103 |
assert 'f1' in resp.form.fields |
|
7104 |
assert 'f2' in resp.form.fields |
|
7105 |
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true' |
|
7106 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none' |
|
7103 |
assert 'fblah_1' in resp.form.fields
|
|
7104 |
assert 'fblah_2' in resp.form.fields
|
|
7105 |
assert resp.html.find('div', {'data-field-id': 'blah_1'}).attrs['data-live-source'] == 'true'
|
|
7106 |
assert resp.html.find('div', {'data-field-id': 'blah_2'}).attrs.get('style') == 'display: none'
|
|
7107 | 7107 |
live_url = resp.html.find('form').attrs['data-live-url'] |
7108 |
resp.form['f1'] = '' |
|
7108 |
resp.form['fblah_1'] = ''
|
|
7109 | 7109 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
7110 |
assert live_resp.json['result']['1']['visible'] |
|
7111 |
assert not live_resp.json['result']['2']['visible'] |
|
7110 |
assert live_resp.json['result']['blah_1']['visible']
|
|
7111 |
assert not live_resp.json['result']['blah_2']['visible']
|
|
7112 | 7112 | |
7113 |
resp.form['f1'] = 'xxx' |
|
7113 |
resp.form['fblah_1'] = 'xxx'
|
|
7114 | 7114 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
7115 |
assert live_resp.json['result']['1']['visible'] |
|
7116 |
assert live_resp.json['result']['2']['visible'] |
|
7115 |
assert live_resp.json['result']['blah_1']['visible']
|
|
7116 |
assert live_resp.json['result']['blah_2']['visible']
|
|
7117 | 7117 | |
7118 | 7118 |
# check submit doesn't work |
7119 | 7119 |
resp = resp.form.submit('submit') |
7120 | 7120 |
assert 'There were errors processing your form.' in resp.text |
7121 | 7121 | |
7122 |
resp.form['f1'] = 'xxx2' |
|
7122 |
resp.form['fblah_1'] = 'xxx2'
|
|
7123 | 7123 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
7124 |
assert live_resp.json['result']['1']['visible'] |
|
7125 |
assert not live_resp.json['result']['2']['visible'] |
|
7124 |
assert live_resp.json['result']['blah_1']['visible']
|
|
7125 |
assert not live_resp.json['result']['blah_2']['visible']
|
|
7126 | 7126 | |
7127 | 7127 |
# check submit does work when second field is hidden |
7128 | 7128 |
resp = resp.form.submit('submit').follow() |
... | ... | |
7166 | 7166 | |
7167 | 7167 |
app = login(get_app(pub), username='foo', password='foo') |
7168 | 7168 |
resp = app.get(formdata.get_url(backoffice=False)) |
7169 |
assert 'f1' in resp.form.fields |
|
7169 |
assert 'fblah_1' in resp.form.fields
|
|
7170 | 7170 | |
7171 | 7171 |
live_url = resp.html.find('form').attrs['data-live-url'] |
7172 |
resp.form['f1'] = 'test' |
|
7172 |
resp.form['fblah_1'] = 'test'
|
|
7173 | 7173 |
live_resp = app.post(live_url, params=resp.form.submit_fields()) |
7174 |
assert live_resp.json['result']['2']['visible'] |
|
7175 |
assert live_resp.json['result']['2']['content'] == '<p>value is test</p>' |
|
7174 |
assert live_resp.json['result']['blah_2']['visible']
|
|
7175 |
assert live_resp.json['result']['blah_2']['content'] == '<p>value is test</p>'
|
|
7176 | 7176 | |
7177 | 7177 | |
7178 | 7178 |
def test_frontoffice_workflow_form_with_impossible_condition(pub): |
... | ... | |
7212 | 7212 | |
7213 | 7213 |
app = login(get_app(pub), username='foo', password='foo') |
7214 | 7214 |
resp = app.get(formdata.get_url(backoffice=False)) |
7215 |
assert 'f1' not in resp.form.fields |
|
7216 |
assert resp.html.find('div', {'data-field-id': '2'}).attrs.get('style') == 'display: none' |
|
7215 |
assert 'fblah_1' not in resp.form.fields
|
|
7216 |
assert resp.html.find('div', {'data-field-id': 'blah_2'}).attrs.get('style') == 'display: none'
|
|
7217 | 7217 | |
7218 | 7218 | |
7219 | 7219 |
def test_choice_button_ignore_form_errors(pub): |
tests/form_pages/test_block.py | ||
---|---|---|
412 | 412 |
resp = resp.form.submit('submit') # -> validation |
413 | 413 |
resp = resp.form.submit('submit').follow() |
414 | 414 |
assert 'The form has been recorded' in resp |
415 |
assert resp.form['f3$element0$f123'].value == 'foo@localhost' |
|
415 |
assert resp.form['fxxx_3$element0$f123'].value == 'foo@localhost'
|
|
416 | 416 | |
417 | 417 | |
418 | 418 |
def test_block_title_and_comment(pub, blocks_feature): |
tests/form_pages/test_formdata.py | ||
---|---|---|
1037 | 1037 |
assert 'The form has been recorded' in resp.text |
1038 | 1038 | |
1039 | 1039 |
assert 'qommon.fileupload.js' in resp.text |
1040 |
resp.forms[0]['f1$file'] = Upload('test.txt', b'foobar', 'text/plain') |
|
1040 |
resp.forms[0]['fxxx_1$file'] = Upload('test.txt', b'foobar', 'text/plain')
|
|
1041 | 1041 |
resp = resp.forms[0].submit('submit') |
1042 | 1042 | |
1043 | 1043 |
assert formdef.data_class().count() == 1 |
... | ... | |
1086 | 1086 |
assert resp.status_int == 302 |
1087 | 1087 |
resp = resp.follow() |
1088 | 1088 |
assert 'The form has been recorded' in resp.text |
1089 |
assert resp.forms[0]['f1'].value == 'foo@localhost' |
|
1089 |
assert resp.forms[0]['fxxx_1'].value == 'foo@localhost'
|
|
1090 | 1090 | |
1091 | 1091 | |
1092 | 1092 |
def test_formdata_workflow_form_prefill_conditional_field(pub): |
... | ... | |
1127 | 1127 |
assert resp.status_int == 302 |
1128 | 1128 |
resp = resp.follow() |
1129 | 1129 |
assert 'The form has been recorded' in resp.text |
1130 |
assert resp.forms[0]['f2'].value == 'foo@localhost' |
|
1130 |
assert resp.forms[0]['fxxx_2'].value == 'foo@localhost'
|
|
1131 | 1131 | |
1132 | 1132 | |
1133 | 1133 |
def test_formdata_workflow_form_prefill_checkbox(pub): |
... | ... | |
1164 | 1164 |
assert 'Check values then click submit.' in resp |
1165 | 1165 |
resp = resp.form.submit('submit').follow() |
1166 | 1166 |
assert 'The form has been recorded' in resp |
1167 |
assert resp.form['f1'].checked is True |
|
1168 |
assert resp.form['f2'].checked is True |
|
1169 |
resp.form['f1'].checked = False |
|
1167 |
assert resp.form['fxxx_1'].checked is True
|
|
1168 |
assert resp.form['fxxx_2'].checked is True
|
|
1169 |
resp.form['fxxx_1'].checked = False
|
|
1170 | 1170 |
resp = resp.form.submit('submit') |
1171 | 1171 | |
1172 | 1172 |
formdata = formdef.data_class().select()[0] |
... | ... | |
1242 | 1242 |
assert 'The form has been recorded' in resp |
1243 | 1243 | |
1244 | 1244 |
# check display value is in form action widget |
1245 |
assert resp.form['f4'].attrs['data-value'] == '1' |
|
1246 |
assert resp.form['f4'].attrs['data-initial-display-value'] == 'hello' |
|
1245 |
assert resp.form['fxxx_4'].attrs['data-value'] == '1'
|
|
1246 |
assert resp.form['fxxx_4'].attrs['data-initial-display-value'] == 'hello'
|
|
1247 | 1247 | |
1248 | 1248 |
# check it is also displayed in a fresh session |
1249 | 1249 |
resp = login(get_app(pub), username='foo', password='foo').get(resp.request.url) |
1250 |
assert resp.form['f4'].attrs['data-value'] == '1' |
|
1251 |
assert resp.form['f4'].attrs['data-initial-display-value'] == 'hello' |
|
1250 |
assert resp.form['fxxx_4'].attrs['data-value'] == '1' |
|
1251 |
assert resp.form['fxxx_4'].attrs['data-initial-display-value'] == 'hello' |
|
1252 | ||
1253 | ||
1254 |
def test_formdata_workflow_many_forms(pub): |
|
1255 |
create_user(pub) |
|
1256 |
wf = Workflow(name='status') |
|
1257 |
st1 = wf.add_status('Status1', 'st1') |
|
1258 | ||
1259 |
display_form1 = FormWorkflowStatusItem() |
|
1260 |
display_form1.id = '_x' |
|
1261 |
display_form1.by = ['_submitter'] |
|
1262 |
display_form1.varname = 'xxx' |
|
1263 |
display_form1.formdef = WorkflowFormFieldsFormDef(item=display_form1) |
|
1264 |
display_form1.formdef.fields.append(fields.StringField(id='1', label='blah1')) |
|
1265 |
st1.items.append(display_form1) |
|
1266 |
display_form1.parent = st1 |
|
1267 | ||
1268 |
display_form2 = FormWorkflowStatusItem() |
|
1269 |
display_form2.id = '_y' |
|
1270 |
display_form2.by = ['_submitter'] |
|
1271 |
display_form2.varname = 'yyy' |
|
1272 |
display_form2.formdef = WorkflowFormFieldsFormDef(item=display_form2) |
|
1273 |
display_form2.formdef.fields.append(fields.StringField(id='1', label='blah2')) |
|
1274 |
st1.items.append(display_form2) |
|
1275 |
display_form2.parent = st1 |
|
1276 | ||
1277 |
wf.store() |
|
1278 | ||
1279 |
FormDef.wipe() |
|
1280 |
formdef = FormDef() |
|
1281 |
formdef.name = 'test' |
|
1282 |
formdef.workflow_id = wf.id |
|
1283 |
formdef.fields = [] |
|
1284 |
formdef.store() |
|
1285 |
formdef.data_class().wipe() |
|
1286 | ||
1287 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/') |
|
1288 |
resp = resp.forms[0].submit('submit') |
|
1289 |
assert 'Check values then click submit.' in resp.text |
|
1290 |
resp = resp.forms[0].submit('submit') |
|
1291 |
assert resp.status_int == 302 |
|
1292 |
resp = resp.follow() |
|
1293 |
assert 'The form has been recorded' in resp.text |
|
1294 |
assert 'fxxx_1' in resp.form.fields |
|
1295 |
assert 'fyyy_1' in resp.form.fields |
|
1296 |
assert 'submit' in resp.form.fields |
|
1252 | 1297 | |
1253 | 1298 | |
1254 | 1299 |
def test_formdata_named_wscall(http_requests, pub): |
tests/test_workflows.py | ||
---|---|---|
2413 | 2413 |
assert form.widgets[1].title == 'Date' |
2414 | 2414 | |
2415 | 2415 |
two_pubs.get_request().environ['REQUEST_METHOD'] = 'POST' |
2416 |
two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '2015-05-12', 'submit': 'submit'}
|
|
2416 |
two_pubs.get_request().form = {'fxxx_1': 'Foobar', 'fxxx_2': '2015-05-12', 'submit': 'submit'}
|
|
2417 | 2417 |
display_form.submit_form(form, formdata, None, None) |
2418 | 2418 | |
2419 | 2419 |
assert formdata.get_substitution_variables()['xxx_var_date'] == '2015-05-12' |
... | ... | |
2426 | 2426 |
form = Form(action='#', use_tokens=False) |
2427 | 2427 |
display_form.fill_form(form, formdata, None) |
2428 | 2428 |
two_pubs.get_request().environ['REQUEST_METHOD'] = 'POST' |
2429 |
two_pubs.get_request().form = {'f1': 'Foobar', 'f2': '12/05/2015', 'submit': 'submit'}
|
|
2429 |
two_pubs.get_request().form = {'fxxx_1': 'Foobar', 'fxxx_2': '12/05/2015', 'submit': 'submit'}
|
|
2430 | 2430 |
display_form.submit_form(form, formdata, None, None) |
2431 | 2431 |
assert formdata.get_substitution_variables()['xxx_var_date'] == '12/05/2015' |
2432 | 2432 |
wcs/fields.py | ||
---|---|---|
546 | 546 |
def perform_more_widget_changes(self, form, kwargs, edit = True): |
547 | 547 |
pass |
548 | 548 | |
549 | ||
550 | 549 |
def add_to_view_form(self, form, value = None): |
551 | 550 |
kwargs = {'render_br': False} |
552 | 551 |
wcs/wf/form.py | ||
---|---|---|
168 | 168 |
def fill_form(self, form, formdata, user, displayed_fields=None, **kwargs): |
169 | 169 |
if not self.formdef: |
170 | 170 |
return |
171 |
for field in self.formdef.fields: |
|
172 |
try: |
|
173 |
field.id = '%s_%s' % (self.varname, int(field.id)) |
|
174 |
except ValueError: |
|
175 |
# already prefixed |
|
176 |
pass |
|
171 | 177 |
self.formdef.var_prefix = self.varname |
172 | 178 |
self.formdef.add_fields_to_form(form, displayed_fields=displayed_fields) |
173 |
form.add_submit('submit', _('Submit')) |
|
179 |
if 'submit' not in form._names: |
|
180 |
form.add_submit('submit', _('Submit')) |
|
174 | 181 | |
175 | 182 |
# put varname in a form attribute so it can be used in templates to |
176 | 183 |
# identify the form. |
177 |
- |