snapshots: do not fail on workflow form fields (#50832)

This commit is contained in:
Lauréline Guérin 2021-02-04 10:37:09 +01:00
parent cae9f3954f
commit 09b7161ae9
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 29 additions and 3 deletions

View File

@ -13,6 +13,7 @@ from wcs.data_sources import NamedDataSource
from wcs.formdef import FormDef
from wcs.qommon.form import UploadedFile
from wcs.qommon.misc import localstrftime
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
from wcs.workflows import Workflow
from wcs.workflows import ExportToModel
from wcs.wscalls import NamedWsCall
@ -439,6 +440,30 @@ def test_workflow_with_model_snapshot_browse(pub):
assert len(os.listdir(os.path.join(pub.app_dir, 'models'))) == 3 + i
def test_workflow_with_form_snapshot_browse(pub):
create_superuser(pub)
create_role()
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)
st1.items.append(display_form)
display_form.parent = st1
wf.store()
snapshot = pub.snapshot_class.select_object_history(wf)[0]
app = login(get_app(pub))
resp = app.get(
'/backoffice/workflows/%s/history/%s/view/status/st1/items/_x/fields/' % (wf.id, snapshot.id)
)
assert 'The fields are readonly' in resp.text # ok, no error
def test_wscall_snapshot_browse(pub):
create_superuser(pub)
create_role()

View File

@ -354,9 +354,10 @@ class FieldsDirectory(Directory):
get_response().filter['sidebar'] = htmltext('<div class="infonotice"><p>%s</p></div>') % _(
self.readonly_message
)
get_response().filter['sidebar'] += utils.snapshot_info_block(
snapshot=self.objectdef.snapshot_object
)
if hasattr(self.objectdef, 'snapshot_object'):
get_response().filter['sidebar'] += utils.snapshot_info_block(
snapshot=self.objectdef.snapshot_object
)
else:
get_response().filter['sidebar'] = str(self.get_new_field_form(self.page_id))
r += self.index_bottom()