fix(client): pass parent_doctype when fetching fields for child table links
This commit is contained in:
parent
c5aa1d9e01
commit
652cd169de
2 changed files with 20 additions and 2 deletions
|
|
@ -416,8 +416,8 @@ def validate_link(doctype: str, docname: str, fields=None):
|
||||||
if not isinstance(docname, str):
|
if not isinstance(docname, str):
|
||||||
frappe.throw(_("Document Name must be a string"))
|
frappe.throw(_("Document Name must be a string"))
|
||||||
|
|
||||||
|
parent_doctype = None
|
||||||
if doctype != "DocType":
|
if doctype != "DocType":
|
||||||
parent_doctype = None
|
|
||||||
if frappe.get_meta(doctype).istable: # needed for links to child rows
|
if frappe.get_meta(doctype).istable: # needed for links to child rows
|
||||||
parent_doctype = frappe.db.get_value(doctype, docname, "parenttype")
|
parent_doctype = frappe.db.get_value(doctype, docname, "parenttype")
|
||||||
if not (
|
if not (
|
||||||
|
|
@ -453,7 +453,7 @@ def validate_link(doctype: str, docname: str, fields=None):
|
||||||
return values
|
return values
|
||||||
|
|
||||||
try:
|
try:
|
||||||
values.update(get_value(doctype, fields, docname))
|
values.update(get_value(doctype, fields, docname, parent=parent_doctype))
|
||||||
except frappe.PermissionError:
|
except frappe.PermissionError:
|
||||||
frappe.clear_last_message()
|
frappe.clear_last_message()
|
||||||
frappe.msgprint(
|
frappe.msgprint(
|
||||||
|
|
|
||||||
|
|
@ -174,6 +174,24 @@ class TestClient(IntegrationTestCase):
|
||||||
validate_link("User", "Guest", fields=["enabled"]), {"name": "Guest", "enabled": 1}
|
validate_link("User", "Guest", fields=["enabled"]), {"name": "Guest", "enabled": 1}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_validate_link_child_table(self):
|
||||||
|
"""
|
||||||
|
Test validate_link works for child table doctypes with field fetch.
|
||||||
|
"""
|
||||||
|
from frappe.client import validate_link
|
||||||
|
|
||||||
|
self.addCleanup(frappe.db.rollback)
|
||||||
|
|
||||||
|
user = frappe.get_doc("User", "Administrator")
|
||||||
|
user.append("block_modules", {"module": "Setup"})
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
child_row = user.block_modules[-1]
|
||||||
|
|
||||||
|
result = validate_link("Block Module", child_row.name, fields=["module"])
|
||||||
|
self.assertEqual(result.get("name"), child_row.name)
|
||||||
|
self.assertEqual(result.get("module"), "Setup")
|
||||||
|
|
||||||
def test_client_insert(self):
|
def test_client_insert(self):
|
||||||
from frappe.client import insert
|
from frappe.client import insert
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue