From edd41712065306be87f0d4fd6ef0637176f82255 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:58:43 +0100 Subject: [PATCH] fix: consider parent doctype when validating link to child row --- frappe/client.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/frappe/client.py b/frappe/client.py index 299f0e6885..29127424cc 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -405,13 +405,16 @@ def validate_link(doctype: str, docname: str, fields=None): if not isinstance(docname, str): frappe.throw(_("Document Name must be a string")) - if doctype != "DocType" and not ( - frappe.has_permission(doctype, "select") or frappe.has_permission(doctype, "read") - ): - frappe.throw( - _("You do not have Read or Select Permissions for {}").format(frappe.bold(doctype)), - frappe.PermissionError, - ) + if doctype != "DocType": + parent_doctype = frappe.db.get_value(doctype, docname, "parenttype") # needed for links to child rows + if not ( + frappe.has_permission(doctype, "select", parent_doctype=parent_doctype) + or frappe.has_permission(doctype, "read", parent_doctype=parent_doctype) + ): + frappe.throw( + _("You do not have Read or Select Permissions for {}").format(frappe.bold(doctype)), + frappe.PermissionError, + ) values = frappe._dict()