Merge pull request #16383 from resilient-tech/refactor-doc-get

refactor(BaseDocument)!: don't return `__dict__` if `key` is falsy
This commit is contained in:
mergify[bot] 2022-04-05 06:27:18 +00:00 committed by GitHub
commit 5b7e7efb57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -132,32 +132,30 @@ 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):
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)
def get(self, key, filters=None, limit=None, default=None):
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]