From 0a2331fca34200b1b309bf5350e7fbf37b00d8f6 Mon Sep 17 00:00:00 2001 From: Javier Wong Date: Sun, 26 Mar 2017 21:42:17 +0800 Subject: [PATCH 1/2] [fix] Customize Form - Report Hide - Hide fields from report builder selection if report hide is selected - Remove field from being shown in the report builder if report hide is selected --- frappe/desk/reportview.py | 17 +++++++++++++++++ frappe/public/js/frappe/ui/filters/filters.js | 6 ++++-- .../js/frappe/views/reports/reportview.js | 3 ++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index c1e00d62a9..f5ada93d29 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -37,6 +37,23 @@ def get_form_params(): else: data["save_user_settings"] = True + for field in fields: + key = field.split(" as ")[0] + + if "." in key: + parenttype, fieldname = key.split(".")[0][4:-1], key.split(".")[1].strip("`") + else: + parenttype = doctype + fieldname = fieldname.strip("`") + + df = frappe.get_meta(parenttype).get_field(fieldname) + + report_hide = df.report_hide if df else None + + # remove the field from the query if the report hide flag is set + if report_hide: + fields.remove(field) + # queries must always be server side data.query = None diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index 7b152aa4d1..0512ffb94b 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -843,7 +843,8 @@ frappe.ui.FieldSelect = Class.extend({ // main table var main_table_fields = std_filters.concat(frappe.meta.docfield_list[me.doctype]); $.each(frappe.utils.sort(main_table_fields, "label", "string"), function(i, df) { - if(frappe.perm.has_perm(me.doctype, df.permlevel, "read")) + // show fields where user has read access and if report hide flag is not set + if(frappe.perm.has_perm(me.doctype, df.permlevel, "read") && !df.report_hide) me.add_field_option(df); }); @@ -852,7 +853,8 @@ frappe.ui.FieldSelect = Class.extend({ if(table_df.options) { var child_table_fields = [].concat(frappe.meta.docfield_list[table_df.options]); $.each(frappe.utils.sort(child_table_fields, "label", "string"), function(i, df) { - if(frappe.perm.has_perm(me.doctype, df.permlevel, "read")) + // show fields where user has read access and if report hide flag is not set + if(frappe.perm.has_perm(me.doctype, df.permlevel, "read") && !df.report_hide) me.add_field_option(df); }); } diff --git a/frappe/public/js/frappe/views/reports/reportview.js b/frappe/public/js/frappe/views/reports/reportview.js index b1c8c32ead..8cf6912fc8 100644 --- a/frappe/public/js/frappe/views/reports/reportview.js +++ b/frappe/public/js/frappe/views/reports/reportview.js @@ -151,7 +151,8 @@ frappe.views.ReportView = frappe.ui.BaseList.extend({ var columns = [['name', this.doctype],]; $.each(frappe.meta.docfield_list[this.doctype], function(i, df) { if((df.in_standard_filter || df.in_list_view) && df.fieldname!='naming_series' - && !in_list(frappe.model.no_value_type, df.fieldtype)) { + && !in_list(frappe.model.no_value_type, df.fieldtype) + && !df.report_hide) { columns.push([df.fieldname, df.parent]); } }); From 42d04337c243611d958c74281f84800d86f050ef Mon Sep 17 00:00:00 2001 From: Javier Wong Date: Wed, 29 Mar 2017 00:59:51 +0800 Subject: [PATCH 2/2] [fix] Missing field declaration for hiding fields with report_hide set --- frappe/desk/reportview.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index f5ada93d29..a26574d2f7 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -37,6 +37,8 @@ def get_form_params(): else: data["save_user_settings"] = True + fields = data["fields"] + for field in fields: key = field.split(" as ")[0]