From beefdb9a1ffbd64c297232c64b67baaf3f567a64 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 10 Jun 2025 20:13:56 +0530 Subject: [PATCH] perf: use lazy doc for permission checks :rocket: Co-Authored-By: Sagar Vora --- frappe/__init__.py | 2 +- frappe/permissions.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 9af24d8c6c..fc1861d640 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -847,7 +847,7 @@ def has_website_permission(doc=None, ptype="read", user=None, verbose=False, doc if doc: if isinstance(doc, str): - doc = get_doc(doctype, doc) + doc = get_lazy_doc(doctype, doc) doctype = doc.doctype diff --git a/frappe/permissions.py b/frappe/permissions.py index 4d29b1e8d6..67b849b82e 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -129,7 +129,10 @@ def has_permission( if doc: if isinstance(doc, str | int): - doc = frappe.get_doc(meta.name, doc) + if meta.is_virtual or doctype == "DocType": + doc = frappe.get_doc(meta.name, doc) + else: # perf: Avoid loading child tables for perm checks + doc = frappe.get_lazy_doc(meta.name, doc) perm = get_doc_permissions(doc, user=user, ptype=ptype, debug=debug).get(ptype) if not perm: debug and _debug_log(