# HG changeset patch # User Sylvain Thénault # Date 1478688267 -3600 # Node ID 4e0829ade86fd7f702f034e12a5c8cc12c253ec9 # Parent f09efeead7f95847b8c778858c32cada3761c2ba [pyramid] Fix 404 handling Avoid seeing a traceback in the UI by catching it before it reaches pyramid and restore usage of the '404' view. Closes #16159863 diff -r f09efeead7f9 -r 4e0829ade86f cubicweb/pyramid/bwcompat.py --- a/cubicweb/pyramid/bwcompat.py Wed Nov 09 11:42:33 2016 +0100 +++ b/cubicweb/pyramid/bwcompat.py Wed Nov 09 11:44:27 2016 +0100 @@ -115,6 +115,11 @@ content = vreg['views'].main_template(req, 'login') request.response.status_code = 403 request.response.body = content + except cubicweb.web.NotFound as ex: + view = vreg['views'].select('404', req) + content = vreg['views'].main_template(req, view=view) + request.response.status_code = ex.status + request.response.body = content finally: # XXX CubicWebPyramidRequest.headers_out should # access directly the pyramid response headers. diff -r f09efeead7f9 -r 4e0829ade86f cubicweb/pyramid/test/test_bw_request.py --- a/cubicweb/pyramid/test/test_bw_request.py Wed Nov 09 11:42:33 2016 +0100 +++ b/cubicweb/pyramid/test/test_bw_request.py Wed Nov 09 11:44:27 2016 +0100 @@ -97,6 +97,11 @@ content_type='application/x-www-form-urlencoded')) self.assertEqual(u"é", req.form['arg']) + def test_404(self): + r = self.webapp.get('/unexisting/', status=404) + self.assertNotIn('error occurred', r.text) + self.assertIn('resource does not exist', r.text) + if __name__ == '__main__': from unittest import main