Mercurial > piecrust2
diff piecrust/serving/middlewares.py @ 1082:8d5b8a3dca02
serve: Show debug info, report errors when debug info isn't available.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 15 Feb 2018 21:17:01 -0800 |
parents | 33a89139c284 |
children |
line wrap: on
line diff
--- a/piecrust/serving/middlewares.py Thu Feb 15 21:16:10 2018 -0800 +++ b/piecrust/serving/middlewares.py Thu Feb 15 21:17:01 2018 -0800 @@ -1,5 +1,5 @@ import os.path -from werkzeug.exceptions import NotFound, Forbidden +from werkzeug.exceptions import HTTPException, NotFound, Forbidden from werkzeug.wrappers import Request, Response from werkzeug.wsgi import ClosingIterator from piecrust import RESOURCES_DIR, CACHE_DIR @@ -71,14 +71,17 @@ rel_req_path = request.path[len(debug_mount):] handler = self._handlers.get(rel_req_path) if handler is not None: - return handler(request, start_response) + try: + return handler(request, start_response) + except HTTPException as ex: + return ex(environ, start_response) return self.app(environ, start_response) def _getDebugInfo(self, request, start_response): app = get_app_for_server(self.appfactory) - if not app.config.get('site/enable_debug_info'): - return Forbidden() + if not app.config.get('site/enable_debug_info', True): + raise Forbidden("PieCrust debug info isn't enabled.") found = False page_path = request.args.get('page') @@ -88,7 +91,7 @@ except (RouteNotFoundError, PageNotFoundError): pass if not found: - return NotFound("No such page: %s" % page_path) + raise NotFound("No such page: %s" % page_path) ctx = DataBuildingContext(req_page.page, sub_num=req_page.sub_num)