@@ -8,3 +8,12 @@ from frappe.model.document import Document | |||||
class CustomRole(Document): | class CustomRole(Document): | ||||
pass | pass | ||||
def get_custom_allowed_roles(field, name): | |||||
allowed_roles = [] | |||||
custom_role = frappe.db.get_value('Custom Role', {field: name}, 'name') | |||||
if custom_role: | |||||
custom_role_doc = frappe.get_doc('Custom Role', custom_role) | |||||
allowed_roles = [d.role for d in custom_role_doc.roles] | |||||
return allowed_roles |
@@ -9,6 +9,7 @@ from frappe.build import html_to_js_template | |||||
from frappe.model.utils import render_include | from frappe.model.utils import render_include | ||||
from frappe import conf, _ | from frappe import conf, _ | ||||
from frappe.desk.form.meta import get_code_files_via_hooks, get_js | from frappe.desk.form.meta import get_code_files_via_hooks, get_js | ||||
from frappe.core.doctype.custom_role.custom_role import get_custom_allowed_roles | |||||
class Page(Document): | class Page(Document): | ||||
def autoname(self): | def autoname(self): | ||||
@@ -81,6 +82,9 @@ class Page(Document): | |||||
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"], | allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"], | ||||
filters={"parent": self.name})] | filters={"parent": self.name})] | ||||
custom_roles = get_custom_allowed_roles('page', self.name) | |||||
allowed.extend(custom_roles) | |||||
if not allowed: | if not allowed: | ||||
return True | return True | ||||
@@ -11,6 +11,7 @@ from frappe.model.document import Document | |||||
from frappe.modules.export_file import export_to_files | from frappe.modules.export_file import export_to_files | ||||
from frappe.modules import make_boilerplate | from frappe.modules import make_boilerplate | ||||
from frappe.core.doctype.page.page import delete_custom_role | from frappe.core.doctype.page.page import delete_custom_role | ||||
from frappe.core.doctype.custom_role.custom_role import get_custom_allowed_roles | |||||
class Report(Document): | class Report(Document): | ||||
def validate(self): | def validate(self): | ||||
@@ -58,10 +59,8 @@ class Report(Document): | |||||
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"], | allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"], | ||||
filters={"parent": self.name})] | filters={"parent": self.name})] | ||||
custom_role = frappe.db.get_value('Custom Role', {'report': self.name}, 'name') | |||||
if custom_role: | |||||
custom_role_doc = frappe.get_doc('Custom Role', custom_role) | |||||
allowed.extend([d.role for d in custom_role_doc.roles]) | |||||
custom_roles = get_custom_allowed_roles('report', self.name) | |||||
allowed.extend(custom_roles) | |||||
if not allowed: | if not allowed: | ||||
return True | return True | ||||