0001-forms-only-alter-request.form-in-POST-requests-29788.patch
tests/test_admin_pages.py | ||
---|---|---|
705 | 705 |
resp = resp.form.submit() |
706 | 706 |
assert time.strftime('%d %m %y', FormDef.get(formdef.id).workflow_options.get('test2')) == '17 06 16' |
707 | 707 | |
708 |
def test_form_workflow_table_variables(pub): |
|
709 |
create_superuser(pub) |
|
710 |
create_role() |
|
711 | ||
712 |
Workflow.wipe() |
|
713 |
workflow = Workflow(name='Workflow One') |
|
714 |
from wcs.workflows import WorkflowVariablesFieldsFormDef |
|
715 |
workflow.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=workflow) |
|
716 |
workflow.variables_formdef.fields.append( |
|
717 |
fields.TableRowsField(id='1', varname='test', label='Test2', |
|
718 |
type='tablerows', columns=['a'])) |
|
719 |
workflow.variables_formdef.fields.append( |
|
720 |
fields.StringField(id='2', varname='test2', label='Test', type='string')) |
|
721 |
workflow.store() |
|
722 | ||
723 |
FormDef.wipe() |
|
724 |
formdef = FormDef() |
|
725 |
formdef.name = 'form title' |
|
726 |
formdef.fields = [] |
|
727 |
formdef.workflow_id = workflow.id |
|
728 |
formdef.store() |
|
729 | ||
730 |
app = login(get_app(pub)) |
|
731 |
resp = app.get('/backoffice/forms/1/') |
|
732 |
assert '"workflow-variables"' in resp.body |
|
733 | ||
734 |
# visit the variables page |
|
735 |
resp = resp.click(href='workflow-variables') |
|
736 | ||
737 |
# and set a value |
|
738 |
resp.form['f1$element0$col0'] = 'foobar' |
|
739 |
resp.form['f2'] = 'foobar' |
|
740 |
resp = resp.form.submit('submit') |
|
741 |
assert resp.location == 'http://example.net/backoffice/forms/1/' |
|
742 | ||
743 |
# check the value has been correctly saved |
|
744 |
assert FormDef.get(formdef.id).workflow_options == { |
|
745 |
'test': [['foobar']], |
|
746 |
'test2': 'foobar'} |
|
747 | ||
748 |
# go back to the variables page, also check value |
|
749 |
resp = resp.follow() |
|
750 |
resp = resp.click(href='workflow-variables') |
|
751 |
assert resp.form['f1$element0$col0'].value == 'foobar' |
|
752 |
assert resp.form['f2'].value == 'foobar' |
|
753 | ||
708 | 754 |
def test_form_roles(pub): |
709 | 755 |
create_superuser(pub) |
710 | 756 |
role = create_role() |
tests/test_widgets.py | ||
---|---|---|
140 | 140 |
widget.set_value([(str(x), None, None) for x in range(10)]) |
141 | 141 |
form = MockHtmlForm(widget) |
142 | 142 |
for row in range(10): |
143 |
assert req.form['test$element%d$col%d' % (row, 0)] == str(row) |
|
144 | 143 |
for col in range(3): |
145 | 144 |
assert 'test$element%d$col%d' % (row, col) in form.as_html |
146 | 145 |
assert not 'test$element%d$col%d' % (10, 0) in form.as_html |
wcs/qommon/form.py | ||
---|---|---|
1408 | 1408 |
widget = self.add_widget(kwargs, i, j) |
1409 | 1409 |
widget = self.get_widget('c-%s-%s' % (i, j)) |
1410 | 1410 |
if value and self.readonly: |
1411 |
if not get_request().form: |
|
1412 |
get_request().form = {} |
|
1413 |
get_request().form[widget.name] = value[i][j] |
|
1411 |
if get_request().get_method() == 'POST': |
|
1412 |
if not get_request().form: |
|
1413 |
get_request().form = {} |
|
1414 |
get_request().form[widget.name] = value[i][j] |
|
1414 | 1415 |
widget.set_value(value[i][j]) |
1415 | 1416 | |
1416 | 1417 |
def add_widget(self, kwargs, i, j): |
... | ... | |
1655 | 1656 |
widget = widget_row.get_widget('col%s'%j) |
1656 | 1657 |
try: |
1657 | 1658 |
widget.set_value(value[i][j]) |
1658 |
if not get_request().form.get(widget.get_name()): |
|
1659 |
get_request().form[widget.get_name()] = value[i][j] |
|
1659 |
if get_request().get_method() == 'POST': |
|
1660 |
if not get_request().form.get(widget.get_name()): |
|
1661 |
get_request().form[widget.get_name()] = value[i][j] |
|
1660 | 1662 |
except IndexError: |
1661 | 1663 |
pass |
1662 | 1664 | |
... | ... | |
2180 | 2182 |
CompositeWidget.__init__(self, name, value, **kwargs) |
2181 | 2183 |
self.add(HiddenWidget, 'latlng', value=value) |
2182 | 2184 |
widget = self.get_widget('latlng') |
2183 |
if value and get_request().form and not get_request().form.get(widget.name): |
|
2185 |
if (value and get_request().get_method() == 'POST' and |
|
2186 |
get_request().form and |
|
2187 |
not get_request().form.get(widget.name)): |
|
2184 | 2188 |
get_request().form[widget.name] = value |
2185 | 2189 |
self.readonly = kwargs.pop('readonly', False) |
2186 | 2190 |
self.map_attributes = {} |
2187 |
- |