diff foodtruck/web.py @ 601:effbc78b5528

admin: Better error reporting, general clean-up.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 24 Jan 2016 10:42:33 -0800
parents 79a31a3c947b
children c6bc0ef03f82
line wrap: on
line diff
--- a/foodtruck/web.py	Sun Jan 24 10:41:36 2016 -0800
+++ b/foodtruck/web.py	Sun Jan 24 10:42:33 2016 -0800
@@ -2,9 +2,9 @@
 import os.path
 import logging
 from flask import Flask, g, request, render_template
-from .config import (
+from .configuration import (
         FoodTruckConfigNotFoundError, get_foodtruck_config)
-from .sites import FoodTruckSites
+from .sites import FoodTruckSites, InvalidSiteError
 
 
 logger = logging.getLogger(__name__)
@@ -55,7 +55,8 @@
         if current is None:
             names = g.config.get('sites')
             if not names or not isinstance(names, dict):
-                raise FoodTruckConfigNotFoundError()
+                raise InvalidSiteError(
+                        "No sites are defined in the configuration file.")
             current = next(iter(names.keys()))
         s = FoodTruckSites(g.config, current)
         return s
@@ -71,9 +72,17 @@
     return response
 
 
-@app.errorhandler(FoodTruckConfigNotFoundError)
-def _on_config_missing(ex):
-    return render_template('install.html')
+if not app.config['DEBUG']:
+    app.logger.debug("Registering exception handlers.")
+
+    @app.errorhandler(FoodTruckConfigNotFoundError)
+    def _on_config_missing(ex):
+        return render_template('install.html')
+
+    @app.errorhandler(InvalidSiteError)
+    def _on_invalid_site(ex):
+        data = {'error': 'invalid_site', 'exception': str(ex)}
+        return render_template('error.html', **data)
 
 
 @app.errorhandler
@@ -132,8 +141,8 @@
 
 import foodtruck.views.baking  # NOQA
 import foodtruck.views.create  # NOQA
+import foodtruck.views.dashboard  # NOQA
 import foodtruck.views.edit  # NOQA
-import foodtruck.views.main  # NOQA
 import foodtruck.views.menu  # NOQA
 import foodtruck.views.preview  # NOQA
 import foodtruck.views.settings  # NOQA