diff --git a/frappe/client.py b/frappe/client.py index 6f19e78183..158a143ad0 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -87,7 +87,12 @@ def get_value(doctype, fieldname, filters=None, as_dict=True, debug=False, paren if not filters: filters = None - value = frappe.get_list(doctype, filters=filters, fields=fields, debug=debug, limit=1) + + if frappe.get_meta(doctype).issingle: + value = frappe.db.get_values_from_single(fields, None, doctype, as_dict=as_dict, debug=debug) + else: + value = frappe.get_list(doctype, filters=filters, fields=fields, debug=debug, limit=1) + if as_dict: value = value[0] if value else {} else: diff --git a/frappe/tests/test_api.py b/frappe/tests/test_api.py index 3139237cc9..45107612cc 100644 --- a/frappe/tests/test_api.py +++ b/frappe/tests/test_api.py @@ -74,6 +74,11 @@ class TestAPI(unittest.TestCase): self.assertRaises(FrappeException, server.get_value, "Note", "(select (password) from(__Auth) order by name desc limit 1)", {"title": "get_value"}) + def test_get_single(self): + server = FrappeClient(get_url(), "Administrator", "admin", verify=False) + server.set_value('Website Settings', 'Website Settings', 'title_prefix', 'test-prefix') + self.assertEqual(server.get_value('Website Settings', 'title_prefix').get('title_prefix'), 'test-prefix') + frappe.db.set_value('Website Settings', None, 'title_prefix', '') def test_update_doc(self): server = FrappeClient(get_url(), "Administrator", "admin", verify=False) diff --git a/requirements.txt b/requirements.txt index a88d0e3c1d..af3104cce7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ oauthlib==3.1.0 openpyxl==2.6.4 passlib==1.7.2 pdfkit==0.6.1 -Pillow==6.2.2 +Pillow==7.1.0 premailer==3.6.1 psycopg2-binary==2.8.4 pyasn1==0.4.8