aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pysite/base_route.py10
-rw-r--r--pysite/route_manager.py24
-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__.py1
-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