From 22d3c513cc7da15f4740fa3221d42a1ec86b9171 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 3 Sep 2015 10:19:42 +0530 Subject: [PATCH] [minor] enhancements to frappe.db.get_single_value. Now cached and converted to integer for 0 and 1 --- frappe/database.py | 18 +++++++++++++++--- frappe/model/document.py | 3 +++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/frappe/database.py b/frappe/database.py index a8120234b5..89f5675d8b 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -505,11 +505,23 @@ class Database: def get_list(self, *args, **kwargs): return frappe.get_list(*args, **kwargs) - def get_single_value(self, doctype, fieldname): - """Get property of Single DocType.""" + def get_single_value(self, doctype, fieldname, cache=False): + """Get property of Single DocType. Cache locally by default""" + value = self.value_cache.setdefault(doctype, {}).get(fieldname) + if value: + return value + val = self.sql("""select value from tabSingles where doctype=%s and field=%s""", (doctype, fieldname)) - return val[0][0] if val else None + val = val[0][0] if val else None + + if val=="0" or val=="1": + # check type + val = int(val) + + self.value_cache[doctype][fieldname] = val + + return val def get_singles_value(self, *args, **kwargs): """Alias for get_single_value""" diff --git a/frappe/model/document.py b/frappe/model/document.py index 741dcf393a..c945c3394b 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -295,6 +295,9 @@ class Document(BaseDocument): frappe.db.sql("""insert into tabSingles(doctype, field, value) values (%s, %s, %s)""", (self.doctype, field, value)) + if self.doctype in frappe.db.value_cache: + del frappe.db.value_cache[self.doctype] + def _set_docstatus_user_and_timestamp(self): self._original_modified = self.modified self.modified = now()