fix: only check parent doctype for child doctypes

This commit is contained in:
Ankush Menat 2025-02-06 12:46:39 +05:30
parent edd4171206
commit 063f2bbc79
2 changed files with 22 additions and 1 deletions

View file

@ -406,7 +406,9 @@ def validate_link(doctype: str, docname: str, fields=None):
frappe.throw(_("Document Name must be a string"))
if doctype != "DocType":
parent_doctype = frappe.db.get_value(doctype, docname, "parenttype") # needed for links to child rows
parent_doctype = None
if frappe.get_meta(doctype).istable: # needed for links to child rows
parent_doctype = frappe.db.get_value(doctype, docname, "parenttype")
if not (
frappe.has_permission(doctype, "select", parent_doctype=parent_doctype)
or frappe.has_permission(doctype, "read", parent_doctype=parent_doctype)

View file

@ -155,6 +155,25 @@ class TestClient(IntegrationTestCase):
self.assertEqual(get("ToDo", filters={}), get("ToDo", filters="{}"))
todo.delete()
def test_client_validatate_link(self):
from frappe.client import validate_link
# Basic test
self.assertTrue(validate_link("User", "Guest"))
# fixes capitalization
if frappe.db.db_type == "mariadb":
self.assertEqual(validate_link("User", "GueSt"), {"name": "Guest"})
# Fetch
self.assertEqual(validate_link("User", "Guest", fields=["enabled"]), {"name": "Guest", "enabled": 1})
# Permissions
with self.set_user("Guest"), self.assertRaises(frappe.PermissionError):
self.assertEqual(
validate_link("User", "Guest", fields=["enabled"]), {"name": "Guest", "enabled": 1}
)
def test_client_insert(self):
from frappe.client import insert