From 4ad0e312fa719957d3a428e74c3b62e7bcb05d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 11 Mar 2016 10:53:20 +0100 Subject: [PATCH] backoffice: add a "secret" formdata inspector page (#6099) --- tests/test_backoffice_pages.py | 12 ++++++++++++ wcs/backoffice/management.py | 22 +++++++++++++++++++++- wcs/qommon/static/css/dc2/admin.css | 18 ++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index b5c1dc4..14f8a0d 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -1955,3 +1955,15 @@ def test_backoffice_criticality_formdata_view(pub): formdata.store() resp = app.get(formdata.get_url(backoffice=True)) assert 'Criticality Level: red' in resp.body + +def test_inspect_page(pub): + user = create_user(pub) + create_environment(pub) + + formdef = FormDef.get_by_urlname('form-title') + formdata = [x for x in formdef.data_class().select() if x.status == 'wf-new'][0] + + resp = login(get_app(pub)).get('%sinspect' % formdata.get_url(backoffice=True), status=403) + + user = create_user(pub, is_admin=True) + resp = login(get_app(pub)).get('%sinspect' % formdata.get_url(backoffice=True), status=200) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index bb6894c..673309f 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -19,6 +19,7 @@ import cStringIO import datetime import json import time +import types try: import xlwt @@ -1620,7 +1621,7 @@ class FormPage(Directory): class FormBackOfficeStatusPage(FormStatusPage): - _q_exports = ['', 'download', 'json', 'action'] + _q_exports = ['', 'download', 'json', 'action', 'inspect'] form_page_class = FormFillPage def html_top(self, title = None): @@ -1798,6 +1799,25 @@ class FormBackOfficeStatusPage(FormStatusPage): return r.getvalue() + def inspect(self): + if not get_publisher().get_backoffice_root().is_accessible('forms'): + raise errors.AccessForbiddenError() + get_response().breadcrumb.append(('inspect', _('Form Inspector'))) + self.html_top(self.formdef.name) + r = TemplateIO(html=True) + r += htmltext('
') + r += htmltext('

%s

') % _('Form Inspector') + r += htmltext('') + return r.getvalue() + class FakeField(object): def __init__(self, id, type_, label): diff --git a/wcs/qommon/static/css/dc2/admin.css b/wcs/qommon/static/css/dc2/admin.css index 8822bfe..92e3330 100644 --- a/wcs/qommon/static/css/dc2/admin.css +++ b/wcs/qommon/static/css/dc2/admin.css @@ -1285,3 +1285,21 @@ form div.page > div { .c-360-user-view li > span { padding-left: 1ex; } + +ul.form-inspector li code { + padding: 0 1ex; + float: left; + width: 25%; +} + +ul.form-inspector li div.value { + display: block; + padding: 0 0 0.5ex 1em; + float: right; + width: 70%; +} + +ul.form-inspector li div.value span.type { + font-size: 80%; + color: #aaa; +} -- 2.7.0