misc: do not crash on invalid file value in workflow variables (#57720)
This commit is contained in:
parent
3e2476ea1c
commit
87b31ed09d
|
@ -870,6 +870,45 @@ def test_form_workflow_table_variables(pub):
|
|||
assert resp.form['f2'].value == 'foobar'
|
||||
|
||||
|
||||
def test_form_workflow_invalid_file_variable(pub):
|
||||
create_superuser(pub)
|
||||
create_role(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
Workflow.wipe()
|
||||
|
||||
workflow = Workflow(name='Workflow One')
|
||||
from wcs.workflows import WorkflowVariablesFieldsFormDef
|
||||
|
||||
workflow.variables_formdef = WorkflowVariablesFieldsFormDef(workflow=workflow)
|
||||
workflow.variables_formdef.fields = [
|
||||
fields.StringField(id='1', varname='test', label='Test', type='string')
|
||||
]
|
||||
workflow.store()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/forms/1/workflow-variables')
|
||||
resp.forms[0]['f1'] = 'foobar'
|
||||
resp = resp.forms[0].submit()
|
||||
|
||||
# check the value has been correctly saved
|
||||
assert FormDef.get(formdef.id).workflow_options == {'test': 'foobar'}
|
||||
|
||||
# modify option type
|
||||
workflow.variables_formdef.fields = [fields.FileField(id='1', varname='test', label='Test', type='file')]
|
||||
workflow.store()
|
||||
|
||||
# do not crash when getting back
|
||||
resp = app.get('/backoffice/forms/1/workflow-variables')
|
||||
|
||||
|
||||
def test_form_roles(pub):
|
||||
create_superuser(pub)
|
||||
role = create_role(pub)
|
||||
|
|
|
@ -771,11 +771,12 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
)
|
||||
self.get_widget('token').set_value(self.value.token)
|
||||
except Exception as e:
|
||||
get_publisher().record_error(
|
||||
_('Failed to set value on field "%s"') % self.field.label,
|
||||
formdef=getattr(self, 'formdef', None),
|
||||
exception=e,
|
||||
)
|
||||
if getattr(self, 'field', None):
|
||||
get_publisher().record_error(
|
||||
_('Failed to set value on field "%s"') % self.field.label,
|
||||
formdef=getattr(self, 'formdef', None),
|
||||
exception=e,
|
||||
)
|
||||
self.value = None
|
||||
|
||||
def add_media(self):
|
||||
|
|
Loading…
Reference in New Issue