backoffice: display an error on diff of snapshots that do not load (#89801)
gitea/wcs/pipeline/head This commit looks good
Details
gitea/wcs/pipeline/head This commit looks good
Details
This commit is contained in:
parent
61ce06676d
commit
0dc5d3267f
|
@ -12,7 +12,7 @@ from wcs.carddef import CardDef
|
|||
from wcs.categories import Category
|
||||
from wcs.comment_templates import CommentTemplate
|
||||
from wcs.data_sources import NamedDataSource
|
||||
from wcs.fields import CommentField, ItemField, PageField, StringField
|
||||
from wcs.fields import BlockField, CommentField, ItemField, PageField, StringField
|
||||
from wcs.formdef import FormDef
|
||||
from wcs.mail_templates import MailTemplate
|
||||
from wcs.qommon.form import UploadedFile
|
||||
|
@ -362,6 +362,61 @@ def test_form_snapshot_diff(pub):
|
|||
assert 'Snapshot <a href="%s/view/">%s</a> - (Version 42.0)' % (snapshot3.id, snapshot3.id) in resp
|
||||
|
||||
|
||||
def test_form_snapshot_diff_with_reference_error(pub):
|
||||
create_superuser(pub)
|
||||
create_role(pub)
|
||||
|
||||
BlockDef.wipe()
|
||||
blockdef = BlockDef()
|
||||
blockdef.name = 'testblock'
|
||||
blockdef.fields = []
|
||||
blockdef.store()
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'testform'
|
||||
formdef.fields = [
|
||||
BlockField(id='1', label='block1', varname='foo', block_slug=blockdef.slug),
|
||||
]
|
||||
formdef.store()
|
||||
assert pub.snapshot_class.count() == 2
|
||||
snapshot1 = pub.snapshot_class.get_latest('formdef', formdef.id)
|
||||
|
||||
formdef.fields.append(StringField(id=2, label='Test'))
|
||||
formdef.store()
|
||||
assert pub.snapshot_class.count() == 3
|
||||
|
||||
formdef.fields = formdef.fields[1:]
|
||||
formdef.store()
|
||||
assert pub.snapshot_class.count() == 4
|
||||
snapshot3 = pub.snapshot_class.get_latest('formdef', formdef.id)
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get(
|
||||
'/backoffice/forms/%s/history/compare?version1=%s&version2=%s'
|
||||
% (formdef.id, snapshot1.id, snapshot3.id)
|
||||
)
|
||||
assert resp.pyquery('h2').text() == 'Compare snapshots (XML)'
|
||||
resp = app.get(
|
||||
'/backoffice/forms/%s/history/compare?version1=%s&version2=%s&mode=inspect'
|
||||
% (formdef.id, snapshot1.id, snapshot3.id)
|
||||
)
|
||||
assert resp.pyquery('h2').text() == 'Compare snapshots (Inspect)'
|
||||
|
||||
BlockDef.wipe()
|
||||
resp = app.get(
|
||||
'/backoffice/forms/%s/history/compare?version1=%s&version2=%s'
|
||||
% (formdef.id, snapshot1.id, snapshot3.id)
|
||||
)
|
||||
assert resp.pyquery('h2').text() == 'Compare snapshots (XML)'
|
||||
resp = app.get(
|
||||
'/backoffice/forms/%s/history/compare?version1=%s&version2=%s&mode=inspect'
|
||||
% (formdef.id, snapshot1.id, snapshot3.id)
|
||||
)
|
||||
assert resp.pyquery('h2').text() == 'Error'
|
||||
assert 'Can not display snapshot (Unknown referenced objects)' in resp.text
|
||||
|
||||
|
||||
def test_form_snapshot_comments(pub):
|
||||
create_superuser(pub)
|
||||
create_role(pub)
|
||||
|
|
|
@ -136,7 +136,13 @@ class SnapshotsDirectory(Directory):
|
|||
if mode == 'inspect' and not has_inspect:
|
||||
raise errors.TraversalError()
|
||||
|
||||
context = getattr(self, 'get_compare_%s_context' % mode)(snapshot1, snapshot2)
|
||||
from wcs.blocks import BlockdefImportError
|
||||
|
||||
try:
|
||||
context = getattr(self, 'get_compare_%s_context' % mode)(snapshot1, snapshot2)
|
||||
except (BlockdefImportError, FormdefImportError, WorkflowImportError) as e:
|
||||
return template.error_page(_('Can not display snapshot (%s)') % e)
|
||||
|
||||
context.update(
|
||||
{
|
||||
'mode': mode,
|
||||
|
|
Loading…
Reference in New Issue