diff --git a/flask_classy.py b/flask_classy.py index e0c5ccd..d290ac9 100644 --- a/flask_classy.py +++ b/flask_classy.py @@ -49,6 +49,14 @@ class FlaskView(object): route_base = None route_prefix = None trailing_slash = True + special_methods = { + "get": ["GET"], + "put": ["PUT"], + "patch": ["PATCH"], + "post": ["POST"], + "delete": ["DELETE"], + "index": ["GET"], + } @classmethod def register(cls, app, route_base=None, subdomain=None, route_prefix=None, @@ -95,7 +103,6 @@ def register(cls, app, route_base=None, subdomain=None, route_prefix=None, members = get_interesting_members(FlaskView, cls) - special_methods = ["get", "put", "patch", "post", "delete", "index"] for name, value in members: proxy = cls.make_proxy_method(name) @@ -119,11 +126,8 @@ def register(cls, app, route_base=None, subdomain=None, route_prefix=None, app.add_url_rule(rule, endpoint, proxy, subdomain=subdomain, **options) - elif name in special_methods: - if name in ["get", "index"]: - methods = ["GET"] - else: - methods = [name.upper()] + elif name in cls.special_methods: + methods = cls.special_methods[name] rule = cls.build_rule("/", value) if not cls.trailing_slash: @@ -259,13 +263,17 @@ def get_route_base(cls): base_rule = parse_rule(route_base) cls.base_args = [r[2] for r in base_rule] else: - if cls.__name__.endswith("View"): - route_base = cls.__name__[:-4].lower() - else: - route_base = cls.__name__.lower() + route_base = cls.default_route_base() return route_base.strip("/") + @classmethod + def default_route_base(cls): + if cls.__name__.endswith("View"): + return cls.__name__[:-4].lower() + else: + return cls.__name__.lower() + @classmethod def build_route_name(cls, method_name):