From f2e1dbe7eb677ea3007bf8bb42ec94aba397cf2b Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Wed, 7 Dec 2022 13:13:27 +0530 Subject: [PATCH] fix: restore `_dict`, used in Jinja code --- frappe/tests/test_safe_exec.py | 3 +++ frappe/utils/safe_exec.py | 1 + 2 files changed, 4 insertions(+) diff --git a/frappe/tests/test_safe_exec.py b/frappe/tests/test_safe_exec.py index fcd5832680..1e370a1160 100644 --- a/frappe/tests/test_safe_exec.py +++ b/frappe/tests/test_safe_exec.py @@ -75,3 +75,6 @@ class TestSafeExec(FrappeTestCase): def test_unsafe_objects(self): unsafe_global = {"frappe": frappe} self.assertRaises(SyntaxError, safe_exec, """frappe.msgprint("Hello")""", unsafe_global) + + def test_frappe_dict_in_jinja(self): + frappe.render_template("{% set my_dict = _dict() %} {{- my_dict.works -}}", {}) diff --git a/frappe/utils/safe_exec.py b/frappe/utils/safe_exec.py index 890f16a1c3..a362664aad 100644 --- a/frappe/utils/safe_exec.py +++ b/frappe/utils/safe_exec.py @@ -105,6 +105,7 @@ def get_safe_globals(): json=NamespaceDict(loads=json.loads, dumps=json.dumps), as_json=frappe.as_json, dict=dict, + _dict=frappe._dict, # this isn't usable with RestrictedPython, but kept for Jinja compatibility log=frappe.log, args=form_dict, frappe=NamespaceDict(