From: Magnus Hagander Date: Tue, 12 Nov 2024 14:32:46 +0000 (+0100) Subject: Handle jinja2 renamed context decorators X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=b982a1d85da48090e5456f59f53d28c55af59145;p=pgeu-system.git Handle jinja2 renamed context decorators Jinja2 v3.0 renamed contextfilter to pass_context. Put some code in that handles both the v3 and v2 name at the same time, as a first step towards supporting jinja2 v3. --- diff --git a/postgresqleu/confreg/jinjafunc.py b/postgresqleu/confreg/jinjafunc.py index 7472d84b..da6b596f 100644 --- a/postgresqleu/confreg/jinjafunc.py +++ b/postgresqleu/confreg/jinjafunc.py @@ -26,6 +26,11 @@ from postgresqleu.util.messaging import get_messaging_class_from_typename import jinja2 import jinja2.sandbox +try: + from jinja2 import pass_context +except ImportError: + # Try Jinja2 2.x version + from jinja2 import contextfilter as pass_context import markdown @@ -259,12 +264,12 @@ def filter_svgparagraph(value, linelength, x, y, dy, parady): return '{}'.format(x, y, "\n".join(_svgparagraph())) -@jinja2.contextfilter +@pass_context def filter_applymacro(context, obj, macroname): return context.resolve(macroname)(obj) -@jinja2.contextfilter +@pass_context def filter_lookup(context, name, default=None): if not name: if default is not None: @@ -285,7 +290,7 @@ def filter_lookup(context, name, default=None): # Unpack a social media link for the specific social media being rendered for. # This filter is *not* enabled by default. -@jinja2.contextfilter +@pass_context def filter_social(context, attr): if not context.get('messaging', None): return None @@ -296,7 +301,7 @@ def filter_social(context, attr): # Get social media profiles including links from a structure. # Returns a list of (provider, handle, link) for each configured # social media identity. -@jinja2.contextfilter +@pass_context def filter_social_links(context, attr): if attr: for k, v in attr.items(): diff --git a/tools/deploystatic/deploystatic.py b/tools/deploystatic/deploystatic.py index 08d3a120..682d3279 100755 --- a/tools/deploystatic/deploystatic.py +++ b/tools/deploystatic/deploystatic.py @@ -20,6 +20,11 @@ import copy import jinja2 import jinja2.sandbox +try: + from jinja2 import pass_context +except ImportError: + # Try Jinja2 2.x version + from jinja2 import contextfilter as pass_context import markdown @@ -75,7 +80,7 @@ def filter_slugify(value): # Create social links. In the main site this is dynamic, this limited # implementation supports just twitter and mastodon. -@jinja2.contextfilter +@pass_context def filter_social_links(context, attr): if attr: for k, v in attr.items():