From 9bbe983207d6b5846fa8f8ca55dae997ab49038f Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Sun, 27 Jul 2025 23:29:43 +0200 Subject: [PATCH 1/7] fix DeprecationWarning: Overriding 'resolve' --- document_page_reference/models/document_page.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index 3c5460bc0fe..fd74a025eae 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -21,8 +21,8 @@ name_re = re.compile("^%s$" % old_name_re.pattern) class Context(SandboxedEnvironment.context_class): - def resolve(self, key): - res = super().resolve(key) + def resolve_or_missing(self, key): + res = super().resolve_or_missing(key) if not isinstance(res, Undefined): return res return self.parent["ref"](key) From f74bf47e7026574d5b947332be776ad11e64b7ef Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 09:38:43 +0200 Subject: [PATCH 2/7] fix unit tests --- document_page_reference/models/document_page.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index fd74a025eae..1e3d86e714b 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -23,9 +23,12 @@ class Context(SandboxedEnvironment.context_class): def resolve_or_missing(self, key): res = super().resolve_or_missing(key) - if not isinstance(res, Undefined): + if res is not Undefined: return res - return self.parent["ref"](key) + try: + return self.parent["ref"](key) + except KeyError: + return Undefined() class Environment(SandboxedEnvironment): context_class = Context From f0ef1bcce444c2db8e392cce0e0af1e55d32a457 Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 11:17:51 +0200 Subject: [PATCH 3/7] fix unit tests --- document_page_reference/models/document_page.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index 1e3d86e714b..92a4812d078 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -23,12 +23,10 @@ class Context(SandboxedEnvironment.context_class): def resolve_or_missing(self, key): res = super().resolve_or_missing(key) - if res is not Undefined: + if not isinstance(res, Undefined): return res - try: - return self.parent["ref"](key) - except KeyError: - return Undefined() + # If the key is not found in the normal context, try to resolve it as a reference + return self.parent["ref"](key) class Environment(SandboxedEnvironment): context_class = Context From 71a2c9b51fad77f687e26c5969e2edf4b91604d4 Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 11:51:46 +0200 Subject: [PATCH 4/7] fix tests --- .../models/document_page.py | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index 92a4812d078..91fb9247169 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -22,11 +22,26 @@ class Context(SandboxedEnvironment.context_class): def resolve_or_missing(self, key): - res = super().resolve_or_missing(key) - if not isinstance(res, Undefined): - return res + # 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: + pass + # 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 @@ -127,9 +142,9 @@ def get_content(self): 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 From 5825662e4db2544d5b8090ee151a3e1057309bf0 Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 11:56:29 +0200 Subject: [PATCH 5/7] fix pre-commit --- document_page_reference/models/document_page.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index 91fb9247169..2e8ff1f36ca 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -34,11 +34,13 @@ def resolve_or_missing(self, key): if not isinstance(res, Undefined): return res except AttributeError: - pass - + _logger.debug( + "Neither resolve_or_missing nor resolve method available in parent context" + ) + # 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) @@ -144,7 +146,8 @@ def get_content(self): return template.render(self._get_template_variables()) except Exception as e: _logger.error( - "Template from page with id = %s cannot be processed: %s" % (self.id, str(e)) + "Template from page with id = %s cannot be processed: %s" + % (self.id, str(e)) ) return self.content From 69d8c4674ff3f54a1d29187da70658b2d38d2e39 Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 12:00:56 +0200 Subject: [PATCH 6/7] fix pre-commit --- document_page_reference/models/document_page.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index 2e8ff1f36ca..cb979095da7 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -35,7 +35,7 @@ def resolve_or_missing(self, key): return res except AttributeError: _logger.debug( - "Neither resolve_or_missing nor resolve method available in parent context" + "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 From c4e3e32a11075fad9f3425dc4deda5c8b41f6386 Mon Sep 17 00:00:00 2001 From: Jan Suhr Date: Mon, 28 Jul 2025 12:14:00 +0200 Subject: [PATCH 7/7] simpler fix --- .../models/document_page.py | 24 +++---------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/document_page_reference/models/document_page.py b/document_page_reference/models/document_page.py index cb979095da7..4e657e06eb1 100644 --- a/document_page_reference/models/document_page.py +++ b/document_page_reference/models/document_page.py @@ -22,29 +22,11 @@ class Context(SandboxedEnvironment.context_class): 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 + res = super().resolve_or_missing(key) + if not isinstance(res, Undefined): + return res 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