fix: also parse JSON-encoded scalar strings in get_safe_filters

This commit is contained in:
Kaushal Shriwas 2026-04-30 15:10:13 +05:30
parent 46fd36d542
commit 470964015e
2 changed files with 3 additions and 1 deletions

View file

@ -364,6 +364,8 @@ class TestFilters(IntegrationTestCase):
def test_get_safe_filters_still_parses_json(self): def test_get_safe_filters_still_parses_json(self):
self.assertEqual(get_safe_filters('{"name": "ABC"}'), {"name": "ABC"}) self.assertEqual(get_safe_filters('{"name": "ABC"}'), {"name": "ABC"})
self.assertEqual(get_safe_filters('[["name", "=", "ABC"]]'), [["name", "=", "ABC"]]) self.assertEqual(get_safe_filters('[["name", "=", "ABC"]]'), [["name", "=", "ABC"]])
# FrappeClient encodes scalar filters via frappe.as_json — must still unwrap
self.assertEqual(get_safe_filters('"ABC"'), "ABC")
def test_get_safe_filters_passes_through_non_strings(self): def test_get_safe_filters_passes_through_non_strings(self):
self.assertEqual(get_safe_filters({"name": "ABC"}), {"name": "ABC"}) self.assertEqual(get_safe_filters({"name": "ABC"}), {"name": "ABC"})

View file

@ -904,7 +904,7 @@ def call(fn, *args, **kwargs):
def get_safe_filters(filters): def get_safe_filters(filters):
if isinstance(filters, str) and filters and filters[0] in "{[": if isinstance(filters, str) and filters and filters[0] in '{["':
try: try:
return orjson.loads(filters) return orjson.loads(filters)
except (TypeError, ValueError): except (TypeError, ValueError):