From 51e2e8a226b1f84ea59f0f56aae6e84eb91e2329 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 23 Sep 2023 14:50:21 +0200 Subject: [PATCH] UI - Add extra validation help for notification body with Jinja2 markup (#1810) --- changedetectionio/forms.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/changedetectionio/forms.py b/changedetectionio/forms.py index 879500b0..33cea7a5 100644 --- a/changedetectionio/forms.py +++ b/changedetectionio/forms.py @@ -229,16 +229,19 @@ class ValidateJinja2Template(object): def __call__(self, form, field): from changedetectionio import notification - from jinja2 import Environment, BaseLoader, TemplateSyntaxError + from jinja2 import Environment, BaseLoader, TemplateSyntaxError, UndefinedError from jinja2.meta import find_undeclared_variables try: jinja2_env = Environment(loader=BaseLoader) jinja2_env.globals.update(notification.valid_tokens) + rendered = jinja2_env.from_string(field.data).render() except TemplateSyntaxError as e: raise ValidationError(f"This is not a valid Jinja2 template: {e}") from e + except UndefinedError as e: + raise ValidationError(f"A variable or function is not defined: {e}") from e ast = jinja2_env.parse(field.data) undefined = ", ".join(find_undeclared_variables(ast))