From 65ff08e7e960be15939c6b5b97bb3a333e6e3ec1 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 10 Sep 2014 16:55:59 +0530 Subject: [PATCH] [permissions] Query Report: don't use a doctype for filtering User Permissions, if the column representing this doctype is empty --- frappe/widgets/query_report.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frappe/widgets/query_report.py b/frappe/widgets/query_report.py index 95b2ce9b64..825b97e7c2 100644 --- a/frappe/widgets/query_report.py +++ b/frappe/widgets/query_report.py @@ -138,7 +138,7 @@ def add_total_row(result, columns): def get_filtered_data(ref_doctype, columns, data): result = [] - linked_doctypes = get_linked_doctypes(columns) + linked_doctypes = get_linked_doctypes(columns, data) match_filters_per_doctype = get_user_match_filters(linked_doctypes, ref_doctype) if match_filters_per_doctype: @@ -183,7 +183,7 @@ def has_match(row, linked_doctypes, doctype_match_filters): return resultant_match -def get_linked_doctypes(columns): +def get_linked_doctypes(columns, data): linked_doctypes = {} for idx, col in enumerate(columns): @@ -197,6 +197,11 @@ def get_linked_doctypes(columns): elif col.get("fieldtype")=="Link" and col.get("options"): linked_doctypes[col["options"]] = col["fieldname"] + # remove doctype if column is empty + for doctype, key in linked_doctypes.items(): + if not any(d[key] for d in data): + del linked_doctypes[doctype] + return linked_doctypes def get_user_match_filters(doctypes, ref_doctype):