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