From 4f650854b8d62b39ca043662ff3ec739530d5a8e Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 15 Oct 2022 17:40:22 +0530 Subject: [PATCH] fix(dx): resolve_class (#18417) * fix(resolve_class): ignore False values * fix: allow multiple arguments * fix: remove unnecessary condition * test: resolve_class --- frappe/tests/test_website.py | 16 ++++++++++++++++ frappe/utils/jinja_globals.py | 10 ++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frappe/tests/test_website.py b/frappe/tests/test_website.py index aeb208c5a2..4cd39f4dd5 100644 --- a/frappe/tests/test_website.py +++ b/frappe/tests/test_website.py @@ -317,6 +317,22 @@ class TestWebsite(FrappeTestCase): self.assertIn('', content) self.assertIn('', content) + def test_resolve_class(self): + from frappe.utils.jinja_globals import resolve_class + + context = frappe._dict(primary=True) + self.assertEqual(resolve_class("test"), "test") + self.assertEqual(resolve_class("test", "test-2"), "test test-2") + self.assertEqual(resolve_class("test", {"test-2": False, "test-3": True}), "test test-3") + self.assertEqual( + resolve_class(["test1", "test2", context.primary and "primary"]), "test1 test2 primary" + ) + + content = 'Test' + self.assertEqual( + frappe.render_template(content, context), 'Test' + ) + def set_home_page_hook(key, value): from frappe import hooks diff --git a/frappe/utils/jinja_globals.py b/frappe/utils/jinja_globals.py index 1265bd4d42..878d96e2bc 100644 --- a/frappe/utils/jinja_globals.py +++ b/frappe/utils/jinja_globals.py @@ -2,12 +2,14 @@ # License: MIT. See LICENSE -def resolve_class(classes): +def resolve_class(*classes): + if classes and len(classes) == 1: + classes = classes[0] + if classes is None: return "" - - if isinstance(classes, str): - return classes + if classes is False: + return "" if isinstance(classes, (list, tuple)): return " ".join(resolve_class(c) for c in classes).strip()