backoffice: redirect to correct view on formdata lookup error (#14299) #989

Merged
fpeters merged 1 commits from wip/14299-redirect-on-failed-lookup into main 2024-01-12 15:14:45 +01:00
2 changed files with 26 additions and 16 deletions

View File

@ -3578,14 +3578,8 @@ def test_formdata_lookup(pub):
# check there's no access to other formdata
app.get('http://example.net/backoffice/management/form-title/%s/' % formdata2.id, status=403)
resp = app.get('/backoffice/management/').follow()
resp.forms[0]['query'] = 'AAAAAAAA'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/management/'
resp = resp.follow().follow()
assert 'No such tracking code or identifier.' in resp.text
# check looking up a formdata id
resp = app.get('/backoffice/management/').follow()
resp.form['query'] = formdata.get_display_id()
resp = resp.form.submit()
assert resp.location == 'http://example.net/backoffice/management/form-title/%s/' % formdata.id
@ -3608,12 +3602,28 @@ def test_formdata_lookup(pub):
resp = resp.follow()
assert 'The form has been recorded' in resp.text
resp = app.get('/backoffice/management/listing')
resp.forms[0]['query'] = 'AAAAAAAA'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/management/listing'
resp = resp.follow()
assert 'No such tracking code or identifier.' in resp.text
# check redirection on errors
if not pub.site_options.has_section('options'):
pub.site_options.add_section('options')
for value in ('false', 'true'):
pub.site_options.set('options', 'default-to-global-view', value)
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd:
pub.site_options.write(fd)
resp = app.get('/backoffice/management/listing')
resp.forms[0]['query'] = 'AAAAAAAA'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/management/listing'
resp = resp.follow()
assert 'No such tracking code or identifier.' in resp.text
resp = app.get('/backoffice/management/forms')
resp.forms[0]['query'] = 'AAAAAAAA'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/backoffice/management/forms'
resp = resp.follow()
assert 'No such tracking code or identifier.' in resp.text
def test_backoffice_sidebar_user_context(pub):

View File

@ -189,7 +189,7 @@ class ManagementDirectory(Directory):
formdefs = FormDef.select(order_by='name', ignore_errors=True, lightweight=True)
if len(formdefs) == 0:
return self.empty_site_message(_('Forms'))
get_response().filter['sidebar'] = self.get_sidebar(formdefs)
get_response().filter['sidebar'] = self.get_sidebar()
r = TemplateIO(html=True)
r += get_session().display_message()
@ -249,9 +249,9 @@ class ManagementDirectory(Directory):
return r.getvalue()
def get_sidebar(self, formdefs):
def get_sidebar(self):
r = TemplateIO(html=True)
r += self.get_lookup_sidebox()
r += self.get_lookup_sidebox('forms')
if not get_publisher().has_site_option('disable-internal-statistics'):
r += htmltext('<div class="bo-block">')
r += htmltext('<ul id="sidebar-actions">')