diff options
Diffstat (limited to 'pysite')
| -rw-r--r-- | pysite/base_route.py | 10 | ||||
| -rw-r--r-- | pysite/route_manager.py | 24 | ||||
| -rw-r--r-- | pysite/views/api/__init__.py (renamed from pysite/views/__init__.py) | 0 | ||||
| -rw-r--r-- | pysite/views/api/healthcheck.py (renamed from pysite/views/healthcheck.py) | 0 | ||||
| -rw-r--r-- | pysite/views/main/__init__.py (renamed from pysite/views/error_handlers/__init__.py) | 0 | ||||
| -rw-r--r-- | pysite/views/main/error_handlers/__init__.py | 1 | ||||
| -rw-r--r-- | pysite/views/main/error_handlers/http_404.py (renamed from pysite/views/error_handlers/http_404.py) | 0 | ||||
| -rw-r--r-- | pysite/views/main/index.py (renamed from pysite/views/index.py) | 0 | ||||
| -rw-r--r-- | pysite/views/main/invite.py (renamed from pysite/views/invite.py) | 0 | 
9 files changed, 24 insertions, 11 deletions
| diff --git a/pysite/base_route.py b/pysite/base_route.py index 916e7fae..8274e66f 100644 --- a/pysite/base_route.py +++ b/pysite/base_route.py @@ -1,5 +1,5 @@  # coding=utf-8 -from flask import Flask, render_template +from flask import Blueprint, render_template  from flask.views import MethodView @@ -17,19 +17,19 @@ class RouteView(BaseView):      path = None  # type: str      @classmethod -    def setup(cls: "RouteView", app: Flask): +    def setup(cls: "RouteView", blueprint: Blueprint):          if not cls.path or not cls.name:              raise RuntimeError("Route views must have both `path` and `name` defined") -        app.add_url_rule(cls.path, view_func=cls.as_view(cls.name)) +        blueprint.add_url_rule(cls.path, view_func=cls.as_view(cls.name))  class ErrorView(BaseView):      error_code = None  # type: int      @classmethod -    def setup(cls: "ErrorView", app: Flask): +    def setup(cls: "ErrorView", blueprint: Blueprint):          if not cls.name or not cls.error_code:              raise RuntimeError("Error views must have both `name` and `error_code` defined") -        app._register_error_handler(None, cls.error_code, cls.as_view(cls.name)) +        blueprint.errorhandler(cls.error_code)(cls.as_view(cls.name)) diff --git a/pysite/route_manager.py b/pysite/route_manager.py index ed0947f8..6ed597b1 100644 --- a/pysite/route_manager.py +++ b/pysite/route_manager.py @@ -3,7 +3,7 @@ import importlib  import inspect  import os -from flask import Flask, abort, g +from flask import Blueprint, Flask, abort, g  import rethinkdb @@ -25,18 +25,30 @@ class RouteManager:          )          self.app.secret_key = os.environ.get("WEBPAGE_SECRET_KEY") -        self.load_views() +        self.main_blueprint = Blueprint("main", __name__) + +        print(f"Loading Blueprint: {self.main_blueprint.name}") +        self.load_views(self.main_blueprint, "pysite/views/main") +        self.app.register_blueprint(self.main_blueprint) +        print("") + +        self.api_blueprint = Blueprint("api", __name__, subdomain="api") + +        print(f"Loading Blueprint: {self.api_blueprint.name}") +        self.load_views(self.api_blueprint, "pysite/views/api") +        self.app.register_blueprint(self.api_blueprint) +        print("")      def run(self):          self.app.run(              port=int(os.environ.get("WEBPAGE_PORT")), debug="FLASK_DEBUG" in os.environ          ) -    def load_views(self, location="pysite/views"): +    def load_views(self, blueprint, location="pysite/views"):          for filename in os.listdir(location):              if os.path.isdir(f"{location}/{filename}"):                  # Recurse if it's a directory; load ALL the views! -                self.load_views(location=f"{location}/{filename}") +                self.load_views(blueprint, location=f"{location}/{filename}")                  continue              if filename.endswith(".py") and not filename.startswith("__init__"): @@ -50,8 +62,8 @@ class RouteManager:                              cls is not RouteView and                              BaseView in cls.__mro__                      ): -                        cls.setup(self.app) -                        print(f"View loaded: {cls.name: <25} ({module.__name__}.{cls_name})") +                        cls.setup(blueprint) +                        print(f">> View loaded: {cls.name: <15} ({module.__name__}.{cls_name})")      def setup_db(self):          connection = self.get_db_connection(connect_database=False) diff --git a/pysite/views/__init__.py b/pysite/views/api/__init__.py index 9bad5790..9bad5790 100644 --- a/pysite/views/__init__.py +++ b/pysite/views/api/__init__.py diff --git a/pysite/views/healthcheck.py b/pysite/views/api/healthcheck.py index 9d1f681a..9d1f681a 100644 --- a/pysite/views/healthcheck.py +++ b/pysite/views/api/healthcheck.py diff --git a/pysite/views/error_handlers/__init__.py b/pysite/views/main/__init__.py index 9bad5790..9bad5790 100644 --- a/pysite/views/error_handlers/__init__.py +++ b/pysite/views/main/__init__.py diff --git a/pysite/views/main/error_handlers/__init__.py b/pysite/views/main/error_handlers/__init__.py new file mode 100644 index 00000000..9bad5790 --- /dev/null +++ b/pysite/views/main/error_handlers/__init__.py @@ -0,0 +1 @@ +# coding=utf-8 diff --git a/pysite/views/error_handlers/http_404.py b/pysite/views/main/error_handlers/http_404.py index 1d557d9b..1d557d9b 100644 --- a/pysite/views/error_handlers/http_404.py +++ b/pysite/views/main/error_handlers/http_404.py diff --git a/pysite/views/index.py b/pysite/views/main/index.py index 0c2d1578..0c2d1578 100644 --- a/pysite/views/index.py +++ b/pysite/views/main/index.py diff --git a/pysite/views/invite.py b/pysite/views/main/invite.py index 9563a5e6..9563a5e6 100644 --- a/pysite/views/invite.py +++ b/pysite/views/main/invite.py | 
