From dfcb69ab21aa6c11960d97861fe5fca063765b8c Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 11 Sep 2023 11:36:04 +0530 Subject: [PATCH] refactor: use reportview get_count implementation Count reported should be according to permissions --- frappe/api/v2.py | 19 +++++++++++-------- frappe/desk/reportview.py | 2 +- frappe/tests/test_api.py | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/frappe/api/v2.py b/frappe/api/v2.py index 938ee5b420..d8b453ee6c 100644 --- a/frappe/api/v2.py +++ b/frappe/api/v2.py @@ -80,6 +80,14 @@ def document_list(doctype: str): return frappe.call(frappe.client.get_list, doctype, **frappe.form_dict) +def count(doctype: str) -> int: + from frappe.desk.reportview import get_count + + frappe.form_dict.doctype = doctype + + return get_count() + + def create_doc(doctype: str): data = frappe.form_dict data.pop("doctype", None) @@ -155,15 +163,8 @@ def run_doc_method(method: str, document: dict[str, Any] | str, kwargs=None): return response -def count(doctype: str) -> int: - from frappe.desk.reportview import get_count - - # TODO: Rewrite - frappe.form_dict.doctype = doctype - return get_count() - - url_rules = [ + # RPC calls Rule("/method/login", endpoint=login), Rule("/method/logout", endpoint=logout), Rule("/method/ping", endpoint=frappe.ping), @@ -174,6 +175,7 @@ url_rules = [ endpoint=lambda: frappe.call(run_doc_method, **frappe.form_dict), ), Rule("/method//", endpoint=handle_rpc_call), + # Document level APIs Rule("/document/", methods=["GET"], endpoint=document_list), Rule("/document/", methods=["POST"], endpoint=create_doc), Rule("/document///", methods=["GET"], endpoint=read_doc), @@ -184,6 +186,7 @@ url_rules = [ methods=["GET", "POST"], endpoint=execute_doc_method, ), + # Collection level APIs Rule("/doctype//meta", methods=["GET"], endpoint=frappe.get_meta), Rule("/doctype//count", methods=["GET"], endpoint=count), ] diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index f8d4632655..fd299af819 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -65,7 +65,7 @@ def execute(doctype, *args, **kwargs): def get_form_params(): - """Stringify GET request parameters.""" + """parse GET request parameters.""" data = frappe._dict(frappe.local.form_dict) clean_params(data) validate_args(data) diff --git a/frappe/tests/test_api.py b/frappe/tests/test_api.py index aa7ec2186e..08a240717e 100644 --- a/frappe/tests/test_api.py +++ b/frappe/tests/test_api.py @@ -152,7 +152,7 @@ class TestResourceAPI(FrappeAPITestCase): @classmethod def setUpClass(cls): super().setUpClass() - for _ in range(10): + for _ in range(20): doc = frappe.get_doc({"doctype": "ToDo", "description": frappe.mock("paragraph")}).insert() cls.GENERATED_DOCUMENTS.append(doc.name) frappe.db.commit()