[fix] Customize Form - Report Hide (#2937)

- 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
This commit is contained in:
Javier Wong 2017-03-27 17:35:47 +08:00 committed by Rushabh Mehta
parent 9f24dc98e4
commit e50e5f15ef
3 changed files with 23 additions and 3 deletions

View file

@ -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

View file

@ -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);
});
}

View file

@ -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]);
}
});