Mercurial > piecrust2
diff piecrust/admin/web.py @ 958:e1cadbfddb48
admin: Move 404 debugging into a separate function.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 07 Oct 2017 12:11:46 -0700 |
parents | 7ecb946bfafd |
children | 45ad976712ec |
line wrap: on
line diff
--- a/piecrust/admin/web.py Sat Oct 07 12:11:13 2017 -0700 +++ b/piecrust/admin/web.py Sat Oct 07 12:11:46 2017 -0700 @@ -34,32 +34,35 @@ # Register extensions and blueprints. app.register_blueprint(foodtruck_bp, url_prefix=url_prefix) - # --------------- # Debugging stuff - @app.errorhandler(404) - def page_not_found(e): - from flask import request, url_for - output = [] - for rule in app.url_map.iter_rules(): - options = {} - for arg in rule.arguments: - options[arg] = "[{0}]".format(arg) - methods = ','.join(rule.methods) - try: - url = url_for(rule.endpoint, **options) - except: - url = '???' - line = ("{:50s} {:20s} {}".format(rule.endpoint, methods, url)) - output.append(line) - - resp = request.path + '<br/>\n' - resp += str(request.environ) + '<br/>\n' - resp += str(app.config['FOODTRUCK_ROOT_URL']) + '<br/>\n' - resp += '<br/>\n'.join(sorted(output)) - return resp, 404 - # --------------- + if app.config.get('FOODTRUCK_DEBUG_404'): + @app.errorhandler(404) + def page_not_found(e): + return _debug_page_not_found(e) logger.debug("Created FoodTruck app with admin root: %s" % root_dir) return app + +def _debug_page_not_found(e): + from flask import request, url_for + output = [] + for rule in app.url_map.iter_rules(): + options = {} + for arg in rule.arguments: + options[arg] = "[{0}]".format(arg) + methods = ','.join(rule.methods) + try: + url = url_for(rule.endpoint, **options) + except: + url = '???' + line = ("{:50s} {:20s} {}".format(rule.endpoint, methods, url)) + output.append(line) + + resp = 'FOODTRUCK_ROOT_URL=%s<br/>\n' % str(app.config['FOODTRUCK_ROOT_URL']) + resp += 'PATH=%s<br/>\n' % request.path + resp += 'ENVIRON=%s<br/>\n' % str(request.environ) + resp += 'URL RULES:<br/>\n' + resp += '<br/>\n'.join(sorted(output)) + return resp, 404