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