aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pysite/base_route.py6
-rw-r--r--pysite/route_manager.py8
-rw-r--r--pysite/views/api/error_view.py5
-rw-r--r--pysite/views/staff/static.py15
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
- )