forms: do not keep empty values when parsing ComputedExpressionWidget (#31823)

This commit is contained in:
Nicolas Roche 2019-08-29 16:03:53 +02:00 committed by Frédéric Péters
parent 0cf37e198d
commit e4a16a37c4
3 changed files with 14 additions and 3 deletions

View File

@ -2688,7 +2688,12 @@ def test_workflows_edit_sms_action(pub):
resp = resp.form.submit().follow()
resp = resp.click('SMS')
resp = resp.form.submit()
resp = resp.form.submit('to$add_element')
resp = resp.form.submit('to$add_element')
resp = resp.form.submit('to$add_element')
resp.form['to$element1$value_text'] = '12345'
resp = resp.form.submit('submit')
assert Workflow.get(workflow.id).possible_status[0].items[0].to == ['12345']
def test_workflows_edit_display_form_action(pub):
create_superuser(pub)

View File

@ -514,6 +514,12 @@ def test_computed_expression_widget():
assert widget.parse() == 'hello world'
assert not widget.has_error()
widget = ComputedExpressionWidget('test')
form = MockHtmlForm(widget)
mock_form_submission(req, widget, {'test$value_text': '', 'test$type': ['text']})
assert widget.parse() == None
assert not widget.has_error()
widget = ComputedExpressionWidget('test')
mock_form_submission(req, widget, {'test$value_python': 'hello world', 'test$type': ['python']})
assert widget.has_error()

View File

@ -2366,9 +2366,9 @@ class ComputedExpressionWidget(CompositeWidget):
if not self.get('type'):
return
value_type = self.get('type')
value_content = self.get('value_%s' % value_type) or ''
value_content = self.get('value_%s' % value_type)
if value_type == 'python':
self.value = '=' + value_content
self.value = '=' + (value_content or '')
else:
self.value = value_content
if self.value: