From e9b1cdcdca0078452c16307617537f5d03fdc42e Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Wed, 23 Mar 2022 18:16:37 +0530 Subject: [PATCH 1/2] refactor(BaseDocument)!: dont return `__dict__` if `key` is falsy --- frappe/model/base_document.py | 42 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 3e9d1317e8..0ba8a8ff17 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -133,31 +133,29 @@ class BaseDocument(object): return frappe.db.get_value(self.doctype, self.name, key) def get(self, key=None, filters=None, limit=None, default=None): - if key: - if isinstance(key, dict): - return _filter(self.get_all_children(), key, limit=limit) - if filters: - if isinstance(filters, dict): - value = _filter(self.__dict__.get(key, []), filters, limit=limit) - else: - default = filters - filters = None - value = self.__dict__.get(key, default) + if isinstance(key, dict): + return _filter(self.get_all_children(), key, limit=limit) + + if filters: + if isinstance(filters, dict): + value = _filter(self.__dict__.get(key, []), filters, limit=limit) else: + default = filters + filters = None value = self.__dict__.get(key, default) - - if value is None and key in ( - d.fieldname for d in self.meta.get_table_fields() - ): - value = [] - self.set(key, value) - - if limit and isinstance(value, (list, tuple)) and len(value) > limit: - value = value[:limit] - - return value else: - return self.__dict__ + value = self.__dict__.get(key, default) + + if value is None and key in ( + d.fieldname for d in self.meta.get_table_fields() + ): + value = [] + self.set(key, value) + + if limit and isinstance(value, (list, tuple)) and len(value) > limit: + value = value[:limit] + + return value def getone(self, key, filters=None): return self.get(key, filters=filters, limit=1)[0] From 73fc2f1d5944a62c230c5fbee3c3497c1ce14756 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Mon, 4 Apr 2022 11:18:46 +0530 Subject: [PATCH 2/2] fix: require `key` in `doc.get` --- frappe/model/base_document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index 0ba8a8ff17..57591d01d5 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -132,7 +132,7 @@ class BaseDocument(object): def get_db_value(self, key): return frappe.db.get_value(self.doctype, self.name, key) - def get(self, key=None, filters=None, limit=None, default=None): + def get(self, key, filters=None, limit=None, default=None): if isinstance(key, dict): return _filter(self.get_all_children(), key, limit=limit)