Source code for quaerere_base_flask.views

"""
"""
__all__ = ['BaseView', 'register_views']

import importlib
import inspect
import sys

from flask_classful import FlaskView

from .base import BaseView


def _view_classes(module):
    """Generator for accessing imported FlaskView classes

    :param module: Name of the module to search
    :type module: str
    :return: Yields FlaskView classes
    :rtype: [FlaskView]
    """
    importlib.import_module(module)
    for cls in inspect.getmembers(sys.modules[module], inspect.isclass):
        if issubclass(cls[1], FlaskView) and cls[0] != 'FlaskView':
            yield cls[1]


[docs]def register_views(app, view_module, version, prefix='api'): """Registers FlaskView classes to the Flask app passed as argument :param app: Flask app instance :type app: flask.Flask :param version: API version string :type version: str :param prefix: String to prepend to API path :type prefix: str or None :return: """ if prefix is not None: route_prefix = f'{prefix}/{version}' else: route_prefix = version for view in _view_classes(view_module): view.register(app, route_prefix=route_prefix)