This commit is contained in:
jans23
2025-07-28 10:01:04 +00:00
committed by GitHub

View File

@@ -21,12 +21,30 @@ try:
name_re = re.compile("^%s$" % old_name_re.pattern)
class Context(SandboxedEnvironment.context_class):
def resolve(self, key):
res = super().resolve(key)
if not isinstance(res, Undefined):
return res
def resolve_or_missing(self, key):
# Try to get from parent context first
try:
res = super().resolve_or_missing(key)
if not isinstance(res, Undefined):
return res
except AttributeError:
# Fallback for older Jinja2 versions
try:
res = super().resolve(key)
if not isinstance(res, Undefined):
return res
except AttributeError:
_logger.debug(
"Neither resolve_or_missing nor resolve method available"
)
# If the key is not found in the normal context, try to resolve it as a reference
return self.parent["ref"](key)
# Keep the old method for backward compatibility
def resolve(self, key):
return self.resolve_or_missing(key)
class Environment(SandboxedEnvironment):
context_class = Context
@@ -126,9 +144,10 @@ class DocumentPage(models.Model):
mako_env = mako_template_env
template = mako_env.from_string(tools.ustr(content))
return template.render(self._get_template_variables())
except Exception:
except Exception as e:
_logger.error(
"Template from page with id = %s cannot be processed" % self.id
"Template from page with id = %s cannot be processed: %s"
% (self.id, str(e))
)
return self.content