Browse Source

[fix] Page and report custom role permisison issue

version-14
Rohit Waghchaure 8 years ago
committed by Nabin Hait
parent
commit
76824541e6
3 changed files with 16 additions and 4 deletions
  1. +9
    -0
      frappe/core/doctype/custom_role/custom_role.py
  2. +4
    -0
      frappe/core/doctype/page/page.py
  3. +3
    -4
      frappe/core/doctype/report/report.py

+ 9
- 0
frappe/core/doctype/custom_role/custom_role.py View File

@@ -8,3 +8,12 @@ from frappe.model.document import Document

class CustomRole(Document):
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

+ 4
- 0
frappe/core/doctype/page/page.py View File

@@ -9,6 +9,7 @@ from frappe.build import html_to_js_template
from frappe.model.utils import render_include
from frappe import conf, _
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):
def autoname(self):
@@ -81,6 +82,9 @@ class Page(Document):
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"],
filters={"parent": self.name})]

custom_roles = get_custom_allowed_roles('page', self.name)
allowed.extend(custom_roles)

if not allowed:
return True



+ 3
- 4
frappe/core/doctype/report/report.py View File

@@ -11,6 +11,7 @@ from frappe.model.document import Document
from frappe.modules.export_file import export_to_files
from frappe.modules import make_boilerplate
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):
def validate(self):
@@ -58,10 +59,8 @@ class Report(Document):
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"],
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:
return True


Loading…
Cancel
Save