diff options
-rw-r--r-- | pysite/base_route.py | 6 | ||||
-rw-r--r-- | pysite/route_manager.py | 8 | ||||
-rw-r--r-- | pysite/views/api/error_view.py | 5 | ||||
-rw-r--r-- | pysite/views/staff/static.py | 15 |
4 files changed, 15 insertions, 19 deletions
diff --git a/pysite/base_route.py b/pysite/base_route.py index 0c1c0357..3bc04728 100644 --- a/pysite/base_route.py +++ b/pysite/base_route.py @@ -148,6 +148,7 @@ class ErrorView(BaseView): """ error_code = None # type: Union[int, Iterable] + register_on_app = True @classmethod def setup(cls: "ErrorView", manager: "pysite.route_manager.RouteManager", blueprint: Blueprint): @@ -171,7 +172,10 @@ class ErrorView(BaseView): if isinstance(cls.error_code, Iterable): for code in cls.error_code: try: - manager.app.errorhandler(code)(cls.as_view(cls.name)) + if cls.register_on_app: + manager.app.errorhandler(code)(cls.as_view(cls.name)) + else: + blueprint.errorhandler(code)(cls.as_view(cls.name)) except KeyError: # This happens if we try to register a handler for a HTTP code that doesn't exist pass else: diff --git a/pysite/route_manager.py b/pysite/route_manager.py index 24d09ee2..949d4ed9 100644 --- a/pysite/route_manager.py +++ b/pysite/route_manager.py @@ -66,8 +66,12 @@ class RouteManager: for sub in self.subdomains: sub_blueprint = Blueprint(sub, __name__, subdomain=sub) self.log.debug(f"Loading Blueprint: {sub_blueprint.name}") - self.load_views(sub_blueprint, f"pysite/views/{sub}") - self.app.register_blueprint(sub_blueprint) + try: + self.app.register_blueprint(sub_blueprint) + except Exception: + logging.getLogger(__name__).exception(f"Failed to register blueprint for subdomain: {sub}") + else: + self.load_views(sub_blueprint, f"pysite/views/{sub}") # Load the websockets self.ws_blueprint = Blueprint("ws", __name__) diff --git a/pysite/views/api/error_view.py b/pysite/views/api/error_view.py index ea7e19f5..6d278604 100644 --- a/pysite/views/api/error_view.py +++ b/pysite/views/api/error_view.py @@ -1,5 +1,7 @@ # coding=utf-8 -from flask import jsonify +from collections import Iterable + +from flask import jsonify, Blueprint from werkzeug.exceptions import HTTPException from pysite.base_route import ErrorView @@ -8,6 +10,7 @@ from pysite.base_route import ErrorView class APIErrorView(ErrorView): name = "api.error_all" error_code = range(400, 600) + register_on_app = False def __init__(self): diff --git a/pysite/views/staff/static.py b/pysite/views/staff/static.py deleted file mode 100644 index 13241216..00000000 --- a/pysite/views/staff/static.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding=utf-8 -from flask import send_from_directory - -from pysite.base_route import RouteView -from pysite.route_manager import STATIC_PATH - - -class StaffView(RouteView): - path = "/static/<path:filename>" - name = "staff.static" - - def get(self, filename): - return send_from_directory( - STATIC_PATH, filename - ) |