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 -        ) | 
