From cb761182682b893d708c79dcd741cedd4e5eb649 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 28 Oct 2021 13:41:12 +0530 Subject: [PATCH] refactor: Check parent validity using parent meta --- frappe/permissions.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/frappe/permissions.py b/frappe/permissions.py index c1483b9b90..2589893072 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -97,7 +97,7 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None, ra if not perm: perm = false_if_not_shared() - return perm + return bool(perm) def get_doc_permissions(doc, user=None, ptype=None): """Returns a dict of evaluated permissions for given `doc` like `{"read":1, "write":1}`""" @@ -592,10 +592,7 @@ def has_child_table_permission(child_doctype, ptype="read", child_doc=None, def is_parent_valid(child_doctype, parent_doctype): - filters = { - "options": child_doctype, - "fieldtype": "Table", - "parent": parent_doctype - } - return not frappe.is_table(parent_doctype) and (frappe.db.exists("DocField", filters, cache=True) - or frappe.db.exists("Custom Field", filters, cache=True)) \ No newline at end of file + from frappe.core.utils import find + parent_meta = frappe.get_meta(parent_doctype) + child_table_field_exist = find(parent_meta.get_table_fields(), lambda d: d.options == child_doctype) + return not frappe.is_table(parent_doctype) and child_table_field_exist \ No newline at end of file