From 7233c257c7e99f86ebe9f0cb3c2c335dc154fc5a Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 16 Apr 2022 05:45:15 +0530 Subject: [PATCH 1/2] fix: handle filters passed as dict to client.get --- frappe/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/client.py b/frappe/client.py index e970a64802..a8223cdeee 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -75,7 +75,7 @@ def get(doctype, name=None, filters=None, parent=None): check_parent_permission(parent, doctype) if filters and not name: - name = frappe.db.get_value(doctype, json.loads(filters)) + name = frappe.db.get_value(doctype, frappe.parse_json(filters)) if not name: frappe.throw(_("No document found for given filters")) From 112da07451ad956d34337a6194163cdfd3a16e38 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sat, 16 Apr 2022 06:03:40 +0530 Subject: [PATCH 2/2] test: dict and JSON filters in client.get --- frappe/tests/test_client.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frappe/tests/test_client.py b/frappe/tests/test_client.py index 1bb2867665..c86c482651 100644 --- a/frappe/tests/test_client.py +++ b/frappe/tests/test_client.py @@ -129,3 +129,15 @@ class TestClient(unittest.TestCase): self.assertTrue("name" in first_item) self.assertTrue("modified" in first_item) frappe.local.login_manager.logout() + + def test_client_get(self): + from frappe.client import get + + todo = frappe.get_doc(doctype="ToDo", description="test").insert() + filters = {"name": todo.name} + filters_json = frappe.as_json(filters) + + self.assertEqual(get("ToDo", filters=filters).description, "test") + self.assertEqual(get("ToDo", filters=filters_json).description, "test") + + todo.delete()