diff --git a/frappe/tests/test_website.py b/frappe/tests/test_website.py index f1c4f3b3f5..818dc8bce6 100644 --- a/frappe/tests/test_website.py +++ b/frappe/tests/test_website.py @@ -280,6 +280,16 @@ class TestWebsite(unittest.TestCase): frappe.flags.force_website_cache = False + def test_safe_render(self): + content = get_response_content('/_test/_test_safe_render_on') + self.assertNotIn("Safe Render On", content) + self.assertIn("frappe.exceptions.ValidationError: Illegal template", content) + + content = get_response_content('/_test/_test_safe_render_off') + self.assertIn("Safe Render Off", content) + self.assertIn("test.__test", content) + self.assertNotIn("frappe.exceptions.ValidationError: Illegal template", content) + def set_home_page_hook(key, value): from frappe import hooks diff --git a/frappe/website/page_renderers/template_page.py b/frappe/website/page_renderers/template_page.py index 3ece8ff5d0..cf017be30b 100644 --- a/frappe/website/page_renderers/template_page.py +++ b/frappe/website/page_renderers/template_page.py @@ -204,7 +204,12 @@ class TemplatePage(BaseTemplatePage): if self.template_path.endswith('min.js'): html = self.source # static else: - html = frappe.render_template(self.source, self.context) + if self.context.safe_render is not None: + safe_render = self.context.safe_render + else: + safe_render = True + + html = frappe.render_template(self.source, self.context, safe_render=safe_render) return html diff --git a/frappe/www/_test/_test_safe_render_off.html b/frappe/www/_test/_test_safe_render_off.html new file mode 100644 index 0000000000..5ad01d67d5 --- /dev/null +++ b/frappe/www/_test/_test_safe_render_off.html @@ -0,0 +1,7 @@ +--- +title: Safe Render Off +safe_render: false +--- + +