Source code for zemfrog.loaders.blueprint
from flask import Blueprint, Flask
from ..helper import get_import_name, import_attr
[docs]def loader(app: Flask):
"""
The function to load all blueprints based on the ``BLUEPRINTS`` configuration in config.py
"""
blueprints = app.config.get("BLUEPRINTS", [])
import_name = get_import_name(app)
for name in blueprints:
bp = name + ".routes.init_blueprint"
routes = name + ".urls.routes"
try:
bp: Blueprint = import_attr(import_name + bp)()
routes = import_attr(import_name + routes)
except (ImportError, AttributeError):
bp: Blueprint = import_attr(bp)()
routes = import_attr(routes)
for url, view, methods in routes:
bp.add_url_rule(url, view_func=view, methods=methods)
app.register_blueprint(bp)