@@ -37,7 +37,7 @@ def get_form_params(): | |||||
data["save_user_settings"] = json.loads(data["save_user_settings"]) | data["save_user_settings"] = json.loads(data["save_user_settings"]) | ||||
else: | else: | ||||
data["save_user_settings"] = True | data["save_user_settings"] = True | ||||
doctype = data["doctype"] | doctype = data["doctype"] | ||||
fields = data["fields"] | fields = data["fields"] | ||||
@@ -51,9 +51,9 @@ def get_form_params(): | |||||
fieldname = fieldname.strip("`") | fieldname = fieldname.strip("`") | ||||
df = frappe.get_meta(parenttype).get_field(fieldname) | df = frappe.get_meta(parenttype).get_field(fieldname) | ||||
report_hide = df.report_hide if df else None | report_hide = df.report_hide if df else None | ||||
# remove the field from the query if the report hide flag is set | # remove the field from the query if the report hide flag is set | ||||
if report_hide: | if report_hide: | ||||
fields.remove(field) | fields.remove(field) | ||||
@@ -331,7 +331,7 @@ def build_match_conditions(doctype, as_condition=True): | |||||
else: | else: | ||||
return match_conditions | return match_conditions | ||||
def get_filters_cond(doctype, filters, conditions): | |||||
def get_filters_cond(doctype, filters, conditions, ignore_permissions=None): | |||||
if filters: | if filters: | ||||
flt = filters | flt = filters | ||||
if isinstance(filters, dict): | if isinstance(filters, dict): | ||||
@@ -347,7 +347,7 @@ def get_filters_cond(doctype, filters, conditions): | |||||
query = DatabaseQuery(doctype) | query = DatabaseQuery(doctype) | ||||
query.filters = flt | query.filters = flt | ||||
query.conditions = conditions | query.conditions = conditions | ||||
query.build_filter_conditions(flt, conditions) | |||||
query.build_filter_conditions(flt, conditions, ignore_permissions) | |||||
cond = ' and ' + ' and '.join(query.conditions) | cond = ' and ' + ' and '.join(query.conditions) | ||||
else: | else: | ||||
@@ -4,7 +4,7 @@ | |||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
import frappe | import frappe | ||||
def load_address_and_contact(doc, key): | |||||
def load_address_and_contact(doc, key=None): | |||||
"""Loads address list and contact list in `__onload`""" | """Loads address list and contact list in `__onload`""" | ||||
from frappe.geo.doctype.address.address import get_address_display | from frappe.geo.doctype.address.address import get_address_display | ||||
@@ -250,8 +250,11 @@ class DatabaseQuery(object): | |||||
if match_conditions: | if match_conditions: | ||||
self.conditions.append("(" + match_conditions + ")") | self.conditions.append("(" + match_conditions + ")") | ||||
def build_filter_conditions(self, filters, conditions): | |||||
def build_filter_conditions(self, filters, conditions, ignore_permissions=None): | |||||
"""build conditions from user filters""" | """build conditions from user filters""" | ||||
if ignore_permissions is not None: | |||||
self.flags.ignore_permissions = ignore_permissions | |||||
if isinstance(filters, dict): | if isinstance(filters, dict): | ||||
filters = [filters] | filters = [filters] | ||||
@@ -5,6 +5,7 @@ from __future__ import unicode_literals | |||||
import frappe, unittest | import frappe, unittest | ||||
from frappe.model.db_query import DatabaseQuery | from frappe.model.db_query import DatabaseQuery | ||||
from frappe.desk.reportview import get_filters_cond | |||||
class TestReportview(unittest.TestCase): | class TestReportview(unittest.TestCase): | ||||
def test_basic(self): | def test_basic(self): | ||||
@@ -70,6 +71,12 @@ class TestReportview(unittest.TestCase): | |||||
self.assertTrue({ "name": todays_event.name } in data) | self.assertTrue({ "name": todays_event.name } in data) | ||||
self.assertTrue({ "name": event.name } in data) | self.assertTrue({ "name": event.name } in data) | ||||
def test_ignore_permissions_for_get_filters_cond(self): | |||||
frappe.set_user('test1@example.com') | |||||
self.assertRaises(frappe.PermissionError, get_filters_cond, 'DocType', dict(istable=1), []) | |||||
self.assertTrue(get_filters_cond('DocType', dict(istable=1), [], ignore_permissions=True)) | |||||
frappe.set_user('Administrator') | |||||
def create_event(subject="_Test Event", starts_on=None): | def create_event(subject="_Test Event", starts_on=None): | ||||
""" create a test event """ | """ create a test event """ | ||||