snapshots: do not fail on workflow import error (#53960)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2021-08-05 17:28:22 +02:00
parent b190151b13
commit 744fee85b5
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 29 additions and 2 deletions

View File

@ -472,6 +472,33 @@ def test_workflow_snapshot_restore(pub):
assert not hasattr(Workflow.get(workflow.id), 'snapshot_object')
def test_workflow_snapshot_restore_with_import_error(pub):
create_superuser(pub)
create_role(pub)
app = login(get_app(pub))
Workflow.wipe()
wf = Workflow(name='status')
st1 = wf.add_status('Status1', 'st1')
display_form = FormWorkflowStatusItem()
display_form.id = '_x'
display_form.varname = 'xxx'
display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
display_form.formdef.fields = [
ItemField(id='1', label='Test', type='item', data_source={'type': 'unknown'})
]
st1.items.append(display_form)
display_form.parent = st1
wf.store()
assert pub.snapshot_class.count() == 1
snapshot = pub.snapshot_class.select_object_history(wf)[0]
resp = app.get('/backoffice/workflows/%s/history/%s/restore' % (wf.id, snapshot.id))
resp = resp.form.submit('submit')
assert 'Can not restore snapshot (Unknown datasources [unknown])' in resp
def test_workflow_with_model_snapshot_browse(pub):
create_superuser(pub)
create_role(pub)

View File

@ -26,7 +26,7 @@ from wcs.mail_templates import MailTemplate
from wcs.qommon import _, errors, misc, template
from wcs.qommon.backoffice.menu import html_top
from wcs.qommon.form import Form, RadiobuttonsWidget, StringWidget
from wcs.workflows import Workflow
from wcs.workflows import Workflow, WorkflowImportError
from wcs.wscalls import NamedWsCall
@ -138,7 +138,7 @@ class SnapshotDirectory(Directory):
if form.get_submit() == 'submit':
try:
self.snapshot.restore(as_new=bool(action.parse() == 'as-new'))
except FormdefImportError as e:
except (FormdefImportError, WorkflowImportError) as e:
reason = _(e.msg) % e.msg_args
if e.details:
reason += ' [%s]' % e.details