@@ -91,49 +91,42 @@ def load_desktop_icons(bootinfo): | |||
bootinfo.desktop_icons = get_desktop_icons() | |||
def get_allowed_pages(): | |||
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() | |||
page_info = {} | |||
has_role = {} | |||
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)), | |||
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): | |||
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} | |||
has_role[p.name] = {"modified":p.modified} | |||
return page_info | |||
# 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): | |||
def get_allowed_reports(): | |||
roles = frappe.get_roles() | |||
report_info = frappe._dict() | |||
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)), | |||
roles, as_dict=True): | |||
has_role[p.name] = {"modified":p.modified} | |||
report_info[d.name] = d | |||
# 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): | |||
# 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): | |||
has_role[p.name] = {"modified":p.modified} | |||
report_info[d.name] = d | |||
return report_info | |||
return has_role | |||
def load_translations(bootinfo): | |||
messages = frappe.get_lang_dict("boot") | |||
@@ -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) { | |||
} | |||
}); |
@@ -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 |
@@ -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,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') | |||
} | |||
}) | |||
} | |||
}); |
@@ -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() |
@@ -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 | |||
} |
@@ -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): | |||
@@ -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') |