Source code for flask_unchained.bundles.admin.macro

[docs]def macro(name): """Replaces :func:`~flask_admin.model.template.macro`, adding support for using macros imported from another file. For example: .. code:: html+jinja {# templates/admin/column_formatters.html #} {% macro email(model, column) %} {% set address = model[column] %} <a href="mailto:{{ address }}">{{ address }}</a> {% endmacro %} .. code:: python class FooAdmin(ModelAdmin): column_formatters = { 'col_name': macro('column_formatters.email') } Also required for this to work, is to add the following to the top of your master admin template: .. code:: html+jinja {# templates/admin/master.html #} {% import 'admin/column_formatters.html' as column_formatters with context %} """ def wrapper(view, context, model, column): # skipcq: PYL-W0613 (unused arg) if '.' in name: macro_import_name, macro_name = name.split('.') m = getattr(context.get(macro_import_name), macro_name, None) else: m = context.resolve(name) if not m: return m return m(model=model, column=column) return wrapper