2024-02-06 13:17:09 -08:00
|
|
|
from flask.templating import Environment as FlaskEnvironment
|
|
|
|
|
from jinja2 import select_autoescape
|
|
|
|
|
|
2025-10-06 09:38:54 -04:00
|
|
|
from app.utils.nunjucks_jinja.templates import Environment as NunjucksEnvironment
|
|
|
|
|
from app.utils.nunjucks_jinja.templates import (
|
2024-02-06 13:17:09 -08:00
|
|
|
NunjucksExtension,
|
|
|
|
|
NunjucksUndefined,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Environment(NunjucksEnvironment, FlaskEnvironment):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
2025-10-06 09:38:54 -04:00
|
|
|
def init_nunjucks_environment(app):
|
|
|
|
|
"""Use the Nunjucks-compatible Jinja environment in a Flask app
|
2024-02-06 13:17:09 -08:00
|
|
|
|
|
|
|
|
>>> from flask import Flask
|
2025-10-06 09:38:54 -04:00
|
|
|
>>> app = Flask("notifications_service")
|
|
|
|
|
>>> init_nunjucks_environment(app)
|
2024-02-06 13:17:09 -08:00
|
|
|
"""
|
|
|
|
|
app.jinja_environment = Environment
|
|
|
|
|
app.select_jinja_autoescape = select_autoescape(
|
|
|
|
|
("html", "htm", "xml", "xhtml", "njk")
|
|
|
|
|
)
|
|
|
|
|
jinja_options = app.jinja_options.copy()
|
|
|
|
|
jinja_options["extensions"].append(NunjucksExtension)
|
|
|
|
|
jinja_options["undefined"] = NunjucksUndefined
|
|
|
|
|
app.jinja_options = jinja_options
|
|
|
|
|
return app
|