Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
600:c37307a72f79 | 601:effbc78b5528 |
---|---|
1 import os | 1 import os |
2 import os.path | 2 import os.path |
3 import logging | 3 import logging |
4 from flask import Flask, g, request, render_template | 4 from flask import Flask, g, request, render_template |
5 from .config import ( | 5 from .configuration import ( |
6 FoodTruckConfigNotFoundError, get_foodtruck_config) | 6 FoodTruckConfigNotFoundError, get_foodtruck_config) |
7 from .sites import FoodTruckSites | 7 from .sites import FoodTruckSites, InvalidSiteError |
8 | 8 |
9 | 9 |
10 logger = logging.getLogger(__name__) | 10 logger = logging.getLogger(__name__) |
11 | 11 |
12 app = Flask(__name__) | 12 app = Flask(__name__) |
53 def _get_sites(): | 53 def _get_sites(): |
54 current = request.cookies.get('foodtruck_site_name') | 54 current = request.cookies.get('foodtruck_site_name') |
55 if current is None: | 55 if current is None: |
56 names = g.config.get('sites') | 56 names = g.config.get('sites') |
57 if not names or not isinstance(names, dict): | 57 if not names or not isinstance(names, dict): |
58 raise FoodTruckConfigNotFoundError() | 58 raise InvalidSiteError( |
59 "No sites are defined in the configuration file.") | |
59 current = next(iter(names.keys())) | 60 current = next(iter(names.keys())) |
60 s = FoodTruckSites(g.config, current) | 61 s = FoodTruckSites(g.config, current) |
61 return s | 62 return s |
62 | 63 |
63 g.config = LazySomething(_get_config) | 64 g.config = LazySomething(_get_config) |
69 for callback in getattr(g, 'after_request_callbacks', ()): | 70 for callback in getattr(g, 'after_request_callbacks', ()): |
70 callback(response) | 71 callback(response) |
71 return response | 72 return response |
72 | 73 |
73 | 74 |
74 @app.errorhandler(FoodTruckConfigNotFoundError) | 75 if not app.config['DEBUG']: |
75 def _on_config_missing(ex): | 76 app.logger.debug("Registering exception handlers.") |
76 return render_template('install.html') | 77 |
78 @app.errorhandler(FoodTruckConfigNotFoundError) | |
79 def _on_config_missing(ex): | |
80 return render_template('install.html') | |
81 | |
82 @app.errorhandler(InvalidSiteError) | |
83 def _on_invalid_site(ex): | |
84 data = {'error': 'invalid_site', 'exception': str(ex)} | |
85 return render_template('error.html', **data) | |
77 | 86 |
78 | 87 |
79 @app.errorhandler | 88 @app.errorhandler |
80 def _on_error(ex): | 89 def _on_error(ex): |
81 logging.exception(ex) | 90 logging.exception(ex) |
130 app.bcrypt = Bcrypt(app) | 139 app.bcrypt = Bcrypt(app) |
131 | 140 |
132 | 141 |
133 import foodtruck.views.baking # NOQA | 142 import foodtruck.views.baking # NOQA |
134 import foodtruck.views.create # NOQA | 143 import foodtruck.views.create # NOQA |
144 import foodtruck.views.dashboard # NOQA | |
135 import foodtruck.views.edit # NOQA | 145 import foodtruck.views.edit # NOQA |
136 import foodtruck.views.main # NOQA | |
137 import foodtruck.views.menu # NOQA | 146 import foodtruck.views.menu # NOQA |
138 import foodtruck.views.preview # NOQA | 147 import foodtruck.views.preview # NOQA |
139 import foodtruck.views.settings # NOQA | 148 import foodtruck.views.settings # NOQA |
140 import foodtruck.views.sources # NOQA | 149 import foodtruck.views.sources # NOQA |
141 | 150 |