From 7ce9f1eaa1acd8c9d7ef618c06dc91182e8e5d93 Mon Sep 17 00:00:00 2001 From: Pruthvi Patel Date: Tue, 15 Feb 2022 13:06:55 +0530 Subject: [PATCH] fix: limit without filter --- frappe/model/base_document.py | 3 +++ frappe/tests/test_document.py | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py index ea4264212b..a386313dc2 100644 --- a/frappe/model/base_document.py +++ b/frappe/model/base_document.py @@ -149,6 +149,9 @@ class BaseDocument(object): self.set(key, []) value = self.__dict__.get(key) + if limit and isinstance(value, (list, tuple)) and len(value) > limit: + value = value[:limit] + return value else: return self.__dict__ diff --git a/frappe/tests/test_document.py b/frappe/tests/test_document.py index a0c44c5c72..71af7e996f 100644 --- a/frappe/tests/test_document.py +++ b/frappe/tests/test_document.py @@ -264,7 +264,10 @@ class TestDocument(unittest.TestCase): def test_limit_for_get(self): doc = frappe.get_doc("DocType", "DocType") - # assuming DocType has more that 3 Data fields + # assuming DocType has more than 3 Data fields + self.assertEquals(len(doc.get("fields", limit=3)), 3) + + # limit with filters self.assertEquals(len(doc.get("fields", filters={"fieldtype": "Data"}, limit=3)), 3) def test_virtual_fields(self):