rename page role to has role, added doctype custom role to set the roles, added screen to set roles to the page and report
This commit is contained in:
parent
e57e9f170b
commit
cc37c5fda8
26 changed files with 551 additions and 149 deletions
|
|
@ -91,49 +91,42 @@ def load_desktop_icons(bootinfo):
|
|||
bootinfo.desktop_icons = get_desktop_icons()
|
||||
|
||||
def get_allowed_pages():
|
||||
roles = frappe.get_roles()
|
||||
page_info = {}
|
||||
|
||||
for p in frappe.db.sql("""select distinct
|
||||
tabPage.name, tabPage.modified, tabPage.title
|
||||
from `tabPage Role`, `tabPage`
|
||||
where `tabPage Role`.role in (%s)
|
||||
and `tabPage Role`.parent = `tabPage`.name""" % ', '.join(['%s']*len(roles)),
|
||||
roles, as_dict=True):
|
||||
|
||||
page_info[p.name] = {"modified":p.modified, "title":p.title}
|
||||
|
||||
# pages where role is not set are also allowed
|
||||
for p in frappe.db.sql("""select name, modified, title
|
||||
from `tabPage` where
|
||||
(select count(*) from `tabPage Role`
|
||||
where `tabPage Role`.parent=tabPage.name) = 0""", as_dict=1):
|
||||
|
||||
page_info[p.name] = {"modified":p.modified, "title":p.title}
|
||||
|
||||
return page_info
|
||||
return get_user_page_or_report('Page')
|
||||
|
||||
def get_allowed_reports():
|
||||
return get_user_page_or_report('Report')
|
||||
|
||||
def get_user_page_or_report(parent):
|
||||
roles = frappe.get_roles()
|
||||
report_info = frappe._dict()
|
||||
has_role = {}
|
||||
|
||||
for d in frappe.db.sql("""select distinct
|
||||
tabReport.name, tabReport.report_type, tabReport.ref_doctype
|
||||
from `tabReport Role`, `tabReport`
|
||||
where `tabReport Role`.role in (%s)
|
||||
and `tabReport Role`.parent = `tabReport`.name""" % ', '.join(['%s']*len(roles)),
|
||||
for p in frappe.db.sql("""select distinct
|
||||
tab{parent}.name, tab{parent}.modified
|
||||
from `tabHas Role`, `tab{parent}`
|
||||
where `tabHas Role`.role in ({roles})
|
||||
and `tabHas Role`.parent = `tab{parent}`.name
|
||||
""".format(parent=parent, roles = ', '.join(['%s']*len(roles))),
|
||||
roles, as_dict=True):
|
||||
|
||||
report_info[d.name] = d
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
|
||||
# reports where role is not set are also allowed
|
||||
for d in frappe.db.sql("""select name, report_type, ref_doctype
|
||||
from `tabReport` where
|
||||
(select count(*) from `tabReport Role`
|
||||
where `tabReport Role`.parent=tabReport.name) = 0""", as_dict=1):
|
||||
# pages or reports where role is not set are also allowed
|
||||
for p in frappe.db.sql("""select name, modified
|
||||
from `tab{parent}` where
|
||||
(select count(*) from `tabHas Role`
|
||||
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent), as_dict=1):
|
||||
|
||||
report_info[d.name] = d
|
||||
return report_info
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
|
||||
# get pages or reports set on custom role
|
||||
for p in frappe.db.sql("""select {field} as name, modified
|
||||
from `tabCustom Role` where
|
||||
{field} is not null and role in ({roles})
|
||||
""".format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1):
|
||||
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
|
||||
return has_role
|
||||
|
||||
def load_translations(bootinfo):
|
||||
messages = frappe.get_lang_dict("boot")
|
||||
|
|
|
|||
8
frappe/core/doctype/custom_role/custom_role.js
Normal file
8
frappe/core/doctype/custom_role/custom_role.js
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
// Copyright (c) 2016, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Custom Role', {
|
||||
refresh: function(frm) {
|
||||
|
||||
}
|
||||
});
|
||||
145
frappe/core/doctype/custom_role/custom_role.json
Normal file
145
frappe/core/doctype/custom_role/custom_role.json
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 1,
|
||||
"allow_rename": 0,
|
||||
"autoname": "hash",
|
||||
"beta": 0,
|
||||
"creation": "2017-02-13 14:53:36.240122",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "role",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Role",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Role",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "page",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Page",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Page",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "report",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Report",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Report",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"idx": 0,
|
||||
"image_view": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2017-02-13 14:53:36.240122",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Custom Role",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"amend": 0,
|
||||
"apply_user_permissions": 0,
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"if_owner": 0,
|
||||
"import": 0,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"set_user_permissions": 0,
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"quick_entry": 0,
|
||||
"read_only": 1,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 0,
|
||||
"track_seen": 0
|
||||
}
|
||||
|
|
@ -6,5 +6,5 @@ from __future__ import unicode_literals
|
|||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class ReportRole(Document):
|
||||
class CustomRole(Document):
|
||||
pass
|
||||
12
frappe/core/doctype/custom_role/test_custom_role.py
Normal file
12
frappe/core/doctype/custom_role/test_custom_role.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies and Contributors
|
||||
# See license.txt
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import frappe
|
||||
import unittest
|
||||
|
||||
# test_records = frappe.get_test_records('Custom Role')
|
||||
|
||||
class TestCustomRole(unittest.TestCase):
|
||||
pass
|
||||
0
frappe/core/doctype/custom_role_manager/__init__.py
Normal file
0
frappe/core/doctype/custom_role_manager/__init__.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright (c) 2016, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Custom Role Manager', {
|
||||
refresh: function(frm) {
|
||||
frm.disable_save();
|
||||
},
|
||||
|
||||
get_roles: function(frm) {
|
||||
frappe.call({
|
||||
method: "get_custom_roles",
|
||||
doc: frm.doc,
|
||||
callback: function(r) {
|
||||
refresh_field('roles')
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
256
frappe/core/doctype/custom_role_manager/custom_role_manager.json
Normal file
256
frappe/core/doctype/custom_role_manager/custom_role_manager.json
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 0,
|
||||
"allow_rename": 0,
|
||||
"beta": 0,
|
||||
"creation": "2017-02-13 17:33:25.157332",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "set_role_for",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Set Role For",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "\nPage\nReport",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:doc.set_role_for == 'Page'",
|
||||
"fieldname": "page",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Page",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Page",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"depends_on": "eval:doc.set_role_for == 'Report'",
|
||||
"fieldname": "report",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Report",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Report",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "get_roles",
|
||||
"fieldtype": "Button",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Get Roles",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "roles_permission",
|
||||
"fieldtype": "Section Break",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Roles Permission",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "roles",
|
||||
"fieldtype": "Table",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Roles",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Has Role",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "update",
|
||||
"fieldtype": "Button",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Update",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "set_custom_roles",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"idx": 0,
|
||||
"image_view": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 1,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2017-02-13 19:52:03.288983",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Custom Role Manager",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"amend": 0,
|
||||
"apply_user_permissions": 0,
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 0,
|
||||
"if_owner": 0,
|
||||
"import": 0,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 0,
|
||||
"role": "System Manager",
|
||||
"set_user_permissions": 0,
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"quick_entry": 1,
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 0,
|
||||
"track_seen": 0
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
|
||||
class CustomRoleManager(Document):
|
||||
def get_custom_roles(self):
|
||||
args = self.get_args()
|
||||
|
||||
self.set('roles', [])
|
||||
for data in frappe.get_all('Custom Role',
|
||||
filters=args, fields=['role', 'page', 'report']):
|
||||
self.append('roles', {
|
||||
'report': data.report,
|
||||
'page': data.page,
|
||||
'role': data.role
|
||||
})
|
||||
|
||||
def set_custom_roles(self):
|
||||
for d in self.roles:
|
||||
args = self.get_args(d)
|
||||
name = frappe.db.get_value('Custom Role', args, "role")
|
||||
if not name:
|
||||
args.update({'doctype': "Custom Role"})
|
||||
self.make_custom_role(args)
|
||||
frappe.msgprint(_("Successfully Updated"))
|
||||
|
||||
def get_args(self, row=None):
|
||||
args = {}
|
||||
name = self.page if self.set_role_for == 'Page' else self.report
|
||||
check_for = self.set_role_for.replace(" ","_").lower()
|
||||
|
||||
args = {check_for: name}
|
||||
if row:
|
||||
args.update({'role': row.role})
|
||||
|
||||
return args
|
||||
|
||||
def make_custom_role(self, args):
|
||||
frappe.get_doc(args).insert()
|
||||
0
frappe/core/doctype/has_role/__init__.py
Normal file
0
frappe/core/doctype/has_role/__init__.py
Normal file
|
|
@ -14,13 +14,14 @@
|
|||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "role",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Role",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
|
|
@ -31,6 +32,7 @@
|
|||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
|
|
@ -48,14 +50,15 @@
|
|||
"issingle": 0,
|
||||
"istable": 1,
|
||||
"max_attachments": 0,
|
||||
"modified": "2016-07-11 03:28:03.281497",
|
||||
"modified": "2017-02-13 14:00:08.116312",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Page Role",
|
||||
"name": "Has Role",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"quick_entry": 0,
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"track_changes": 0,
|
||||
"track_seen": 0
|
||||
}
|
||||
10
frappe/core/doctype/has_role/has_role.py
Normal file
10
frappe/core/doctype/has_role/has_role.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class HasRole(Document):
|
||||
pass
|
||||
|
|
@ -21,7 +21,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Page HTML",
|
||||
|
|
@ -49,7 +48,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Page Name",
|
||||
|
|
@ -78,7 +76,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Title",
|
||||
|
|
@ -105,7 +102,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 0,
|
||||
"label": "icon",
|
||||
|
|
@ -132,7 +128,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -158,7 +153,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Module",
|
||||
|
|
@ -188,7 +182,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Standard",
|
||||
|
|
@ -218,7 +211,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"length": 0,
|
||||
|
|
@ -244,7 +236,6 @@
|
|||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Roles",
|
||||
|
|
@ -252,7 +243,7 @@
|
|||
"no_copy": 0,
|
||||
"oldfieldname": "roles",
|
||||
"oldfieldtype": "Table",
|
||||
"options": "Page Role",
|
||||
"options": "Has Role",
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
|
|
@ -276,7 +267,7 @@
|
|||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2016-12-29 14:40:09.047100",
|
||||
"modified": "2017-02-13 13:58:37.481593",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Page",
|
||||
|
|
@ -292,7 +283,6 @@
|
|||
"export": 0,
|
||||
"if_owner": 0,
|
||||
"import": 0,
|
||||
"is_custom": 0,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
|
|
@ -313,7 +303,6 @@
|
|||
"export": 0,
|
||||
"if_owner": 0,
|
||||
"import": 0,
|
||||
"is_custom": 0,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@ class Page(Document):
|
|||
return d
|
||||
|
||||
def is_permitted(self):
|
||||
"""Returns true if Page Role is not set or the user is allowed."""
|
||||
"""Returns true if Has Role is not set or the user is allowed."""
|
||||
from frappe.utils import has_common
|
||||
|
||||
allowed = [d.role for d in frappe.get_all("Page Role", fields=["role"],
|
||||
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"],
|
||||
filters={"parent": self.name})]
|
||||
|
||||
if not allowed:
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
Role that has access to parent Page
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
from frappe.model.document import Document
|
||||
|
||||
class PageRole(Document):
|
||||
pass
|
||||
|
|
@ -457,7 +457,7 @@
|
|||
"label": "Roles",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "Report Role",
|
||||
"options": "Has Role",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ class Report(Document):
|
|||
self.set('roles', roles)
|
||||
|
||||
def is_permitted(self):
|
||||
"""Returns true if Page Role is not set or the user is allowed."""
|
||||
"""Returns true if Has Role is not set or the user is allowed."""
|
||||
from frappe.utils import has_common
|
||||
|
||||
allowed = [d.role for d in frappe.get_all("Report Role", fields=["role"],
|
||||
allowed = [d.role for d in frappe.get_all("Has Role", fields=["role"],
|
||||
filters={"parent": self.name})]
|
||||
|
||||
if not allowed:
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ class TestReport(unittest.TestCase):
|
|||
|
||||
def test_report_permisisons(self):
|
||||
frappe.db.sql("""delete from `tabUserRole` where parent = %s
|
||||
and role = 'Test Report Role'""", frappe.session.user, auto_commit=1)
|
||||
and role = 'Test Has Role'""", frappe.session.user, auto_commit=1)
|
||||
|
||||
if not frappe.db.exists('Role', 'Test Report Role'):
|
||||
if not frappe.db.exists('Role', 'Test Has Role'):
|
||||
role = frappe.get_doc({
|
||||
'doctype': 'Role',
|
||||
'role_name': 'Test Report Role'
|
||||
'role_name': 'Test Has Role'
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
if not frappe.db.exists("Report", "Test Report"):
|
||||
|
|
@ -46,7 +46,7 @@ class TestReport(unittest.TestCase):
|
|||
'report_type': 'Query Report',
|
||||
'is_standard': 'No',
|
||||
'roles': [
|
||||
{'role': 'Test Report Role'}
|
||||
{'role': 'Test Has Role'}
|
||||
]
|
||||
}).insert(ignore_permissions=True)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 0,
|
||||
"allow_rename": 0,
|
||||
"autoname": "hash",
|
||||
"beta": 0,
|
||||
"creation": "2017-02-09 16:10:53.284047",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "role",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Role",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "role",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Role",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"idx": 0,
|
||||
"image_view": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 1,
|
||||
"max_attachments": 0,
|
||||
"modified": "2017-02-09 16:10:53.284047",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Report Role",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"quick_entry": 0,
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 1,
|
||||
"track_seen": 0
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@ frappe.ui.form.on("Customize Form", {
|
|||
['DocType', 'issingle', '=', 0],
|
||||
['DocType', 'custom', '=', 0],
|
||||
['DocType', 'name', 'not in', 'DocType, DocField, DocPerm, User, Role, UserRole, \
|
||||
Page, Page Role, Module Def, Print Format, Report, Customize Form, \
|
||||
Page, Has Role, Module Def, Print Format, Report, Customize Form, \
|
||||
Customize Form Field']
|
||||
]
|
||||
};
|
||||
|
|
|
|||
|
|
@ -53,5 +53,5 @@ def has_permission(page):
|
|||
# check if there are any user_permissions
|
||||
return False
|
||||
else:
|
||||
# hack for home pages! if no page roles, allow everyone to see!
|
||||
# hack for home pages! if no Has Roles, allow everyone to see!
|
||||
return True
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ ignore_values = {
|
|||
"Print Format": ["disabled"]
|
||||
}
|
||||
|
||||
ignore_doctypes = ["Page Role"]
|
||||
ignore_doctypes = ["Has Role"]
|
||||
|
||||
def import_doc(docdict, force=False, data_import=False, pre_process=None,
|
||||
ignore_version=None, reset_permissions=False):
|
||||
|
|
|
|||
9
frappe/patches/v7_3/rename_page_role_to_has_role.py
Normal file
9
frappe/patches/v7_3/rename_page_role_to_has_role.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
if not frappe.db.exists('DocType', 'Has Role'):
|
||||
frappe.rename_doc('DocType', 'Page Role', 'Has Role')
|
||||
Loading…
Add table
Reference in a new issue