From f0f347b01734b719bae0d36a8670fd7e49866b1e Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Mon, 5 Feb 2018 20:15:01 +0000 Subject: Revert "Major update" This reverts commit 80a1ab5 --- pysite/base_route.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 pysite/base_route.py (limited to 'pysite/base_route.py') diff --git a/pysite/base_route.py b/pysite/base_route.py new file mode 100644 index 00000000..76338280 --- /dev/null +++ b/pysite/base_route.py @@ -0,0 +1,29 @@ +# coding=utf-8 +from flask import Flask +from flask.views import MethodView + +__author__ = "Gareth Coles" + + +class BaseView(MethodView): + path = None #: str + name = None #: str + + @classmethod + def setup(cls: "BaseView", app: Flask): + 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)) + + +class ErrorView(MethodView): + name = None #: str + error_code = None #: int + + @classmethod + def setup(cls: "ErrorView", app: Flask): + 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, 404, cls.as_view(cls.name)) -- cgit v1.2.3