diff options
Diffstat (limited to '')
| -rw-r--r-- | pysite/base_route.py | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/pysite/base_route.py b/pysite/base_route.py index 5c01bbb9..017a8b6e 100644 --- a/pysite/base_route.py +++ b/pysite/base_route.py @@ -1,10 +1,8 @@  # coding=utf-8 -import os -import random -import string  from collections import Iterable +from typing import Any, Dict -from flask import Blueprint, jsonify, render_template +from flask import Blueprint, Response, jsonify, render_template  from flask.views import MethodView  from pysite.constants import ErrorCodes @@ -19,7 +17,14 @@ class BaseView(MethodView):      name = None  # type: str -    def render(self, *template_names, **context): +    def render(self, *template_names: str, **context: Dict[str, Any]) -> str: +        """ +        Render some templates and get them back in a form that you can simply return from your view function. + +        :param template_names: Names of the templates to render +        :param context: Extra data to pass into the template +        :return: String representing the rendered templates +        """          context["current_page"] = self.name          context["view"] = self @@ -81,16 +86,13 @@ class APIView(RouteView):      ...         return self.error(ErrorCodes.unknown_route)      """ -    def validate_key(self, api_key: str): -        """ Placeholder! """ -        return api_key == os.environ.get("API_KEY") - -    def generate_api_key(self): -        """ Generate a random string of n characters. """ -        pool = random.choices(string.ascii_letters + string.digits, k=32) -        return "".join(pool) +    def error(self, error_code: ErrorCodes) -> Response: +        """ +        Generate a JSON response for you to return from your handler, for a specific type of API error -    def error(self, error_code: ErrorCodes): +        :param error_code: The type of error to generate a response for - see `constants.ErrorCodes` for more +        :return: A Flask Response object that you can return from your handler +        """          data = {              "error_code": error_code.value, @@ -146,7 +148,7 @@ class ErrorView(BaseView):      @classmethod      def setup(cls: "ErrorView", manager: "pysite.route_manager.RouteManager", blueprint: Blueprint):          """ -        Set up the view by registering it as the error handler for the HTTP status code specified in the class +        Set up the view by registering it as the error handler for the HTTP status codes specified in the class          attributes - this will also deal with multiple inheritance by calling `super().setup()` as appropriate.          :param manager: Instance of the current RouteManager | 
