Ver código fonte

[fix] Page and report custom role permisison issue

version-14
Rohit Waghchaure 8 anos atrás
committed by Nabin Hait
pai
commit
76824541e6
3 arquivos alterados com 16 adições e 4 exclusões
  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 Ver arquivo

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

+ 4
- 0
frappe/core/doctype/page/page.py Ver arquivo

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




+ 3
- 4
frappe/core/doctype/report/report.py Ver arquivo

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


Carregando…
Cancelar
Salvar