From cc37c5fda8d8a6eaf1fe326e0114a33ff5db04e1 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 13 Feb 2017 19:55:02 +0530 Subject: [PATCH] rename page role to has role, added doctype custom role to set the roles, added screen to set roles to the page and report --- frappe/boot.py | 63 ++--- .../{report_role => custom_role}/__init__.py | 0 .../core/doctype/custom_role/custom_role.js | 8 + .../core/doctype/custom_role/custom_role.json | 145 ++++++++++ .../custom_role.py} | 2 +- .../doctype/custom_role/test_custom_role.py | 12 + .../doctype/custom_role_manager/__init__.py | 0 .../custom_role_manager.js | 18 ++ .../custom_role_manager.json | 256 ++++++++++++++++++ .../custom_role_manager.py | 44 +++ frappe/core/doctype/has_role/__init__.py | 0 .../page_role.json => has_role/has_role.json} | 9 +- frappe/core/doctype/has_role/has_role.py | 10 + frappe/core/doctype/page/page.json | 15 +- frappe/core/doctype/page/page.py | 4 +- frappe/core/doctype/page_role/README.md | 1 - frappe/core/doctype/page_role/__init__.py | 4 - frappe/core/doctype/page_role/page_role.py | 10 - frappe/core/doctype/report/report.json | 2 +- frappe/core/doctype/report/report.py | 4 +- frappe/core/doctype/report/test_report.py | 8 +- .../core/doctype/report_role/report_role.json | 70 ----- .../doctype/customize_form/customize_form.js | 2 +- frappe/desk/desk_page.py | 2 +- frappe/modules/import_file.py | 2 +- .../v7_3/rename_page_role_to_has_role.py | 9 + 26 files changed, 551 insertions(+), 149 deletions(-) rename frappe/core/doctype/{report_role => custom_role}/__init__.py (100%) create mode 100644 frappe/core/doctype/custom_role/custom_role.js create mode 100644 frappe/core/doctype/custom_role/custom_role.json rename frappe/core/doctype/{report_role/report_role.py => custom_role/custom_role.py} (89%) create mode 100644 frappe/core/doctype/custom_role/test_custom_role.py create mode 100644 frappe/core/doctype/custom_role_manager/__init__.py create mode 100644 frappe/core/doctype/custom_role_manager/custom_role_manager.js create mode 100644 frappe/core/doctype/custom_role_manager/custom_role_manager.json create mode 100644 frappe/core/doctype/custom_role_manager/custom_role_manager.py create mode 100644 frappe/core/doctype/has_role/__init__.py rename frappe/core/doctype/{page_role/page_role.json => has_role/has_role.json} (86%) create mode 100644 frappe/core/doctype/has_role/has_role.py delete mode 100644 frappe/core/doctype/page_role/README.md delete mode 100644 frappe/core/doctype/page_role/__init__.py delete mode 100644 frappe/core/doctype/page_role/page_role.py delete mode 100644 frappe/core/doctype/report_role/report_role.json create mode 100644 frappe/patches/v7_3/rename_page_role_to_has_role.py diff --git a/frappe/boot.py b/frappe/boot.py index 98ceb073bb..17b5a2746d 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -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") diff --git a/frappe/core/doctype/report_role/__init__.py b/frappe/core/doctype/custom_role/__init__.py similarity index 100% rename from frappe/core/doctype/report_role/__init__.py rename to frappe/core/doctype/custom_role/__init__.py diff --git a/frappe/core/doctype/custom_role/custom_role.js b/frappe/core/doctype/custom_role/custom_role.js new file mode 100644 index 0000000000..85302a48b7 --- /dev/null +++ b/frappe/core/doctype/custom_role/custom_role.js @@ -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) { + + } +}); diff --git a/frappe/core/doctype/custom_role/custom_role.json b/frappe/core/doctype/custom_role/custom_role.json new file mode 100644 index 0000000000..efd307c778 --- /dev/null +++ b/frappe/core/doctype/custom_role/custom_role.json @@ -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 +} \ No newline at end of file diff --git a/frappe/core/doctype/report_role/report_role.py b/frappe/core/doctype/custom_role/custom_role.py similarity index 89% rename from frappe/core/doctype/report_role/report_role.py rename to frappe/core/doctype/custom_role/custom_role.py index 27ee3ca0da..238b605551 100644 --- a/frappe/core/doctype/report_role/report_role.py +++ b/frappe/core/doctype/custom_role/custom_role.py @@ -6,5 +6,5 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document -class ReportRole(Document): +class CustomRole(Document): pass diff --git a/frappe/core/doctype/custom_role/test_custom_role.py b/frappe/core/doctype/custom_role/test_custom_role.py new file mode 100644 index 0000000000..670b494b10 --- /dev/null +++ b/frappe/core/doctype/custom_role/test_custom_role.py @@ -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 diff --git a/frappe/core/doctype/custom_role_manager/__init__.py b/frappe/core/doctype/custom_role_manager/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/doctype/custom_role_manager/custom_role_manager.js b/frappe/core/doctype/custom_role_manager/custom_role_manager.js new file mode 100644 index 0000000000..ce1d5aed6d --- /dev/null +++ b/frappe/core/doctype/custom_role_manager/custom_role_manager.js @@ -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') + } + }) + } +}); diff --git a/frappe/core/doctype/custom_role_manager/custom_role_manager.json b/frappe/core/doctype/custom_role_manager/custom_role_manager.json new file mode 100644 index 0000000000..3ace9af90e --- /dev/null +++ b/frappe/core/doctype/custom_role_manager/custom_role_manager.json @@ -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 +} \ No newline at end of file diff --git a/frappe/core/doctype/custom_role_manager/custom_role_manager.py b/frappe/core/doctype/custom_role_manager/custom_role_manager.py new file mode 100644 index 0000000000..12c2b13111 --- /dev/null +++ b/frappe/core/doctype/custom_role_manager/custom_role_manager.py @@ -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() diff --git a/frappe/core/doctype/has_role/__init__.py b/frappe/core/doctype/has_role/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/doctype/page_role/page_role.json b/frappe/core/doctype/has_role/has_role.json similarity index 86% rename from frappe/core/doctype/page_role/page_role.json rename to frappe/core/doctype/has_role/has_role.json index 5b2beb5ea8..7fb913f6b2 100644 --- a/frappe/core/doctype/page_role/page_role.json +++ b/frappe/core/doctype/has_role/has_role.json @@ -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 } \ No newline at end of file diff --git a/frappe/core/doctype/has_role/has_role.py b/frappe/core/doctype/has_role/has_role.py new file mode 100644 index 0000000000..ea32b8392a --- /dev/null +++ b/frappe/core/doctype/has_role/has_role.py @@ -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 diff --git a/frappe/core/doctype/page/page.json b/frappe/core/doctype/page/page.json index 4405306342..5f902144e2 100644 --- a/frappe/core/doctype/page/page.json +++ b/frappe/core/doctype/page/page.json @@ -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, diff --git a/frappe/core/doctype/page/page.py b/frappe/core/doctype/page/page.py index e2cea59993..1a677120a9 100644 --- a/frappe/core/doctype/page/page.py +++ b/frappe/core/doctype/page/page.py @@ -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: diff --git a/frappe/core/doctype/page_role/README.md b/frappe/core/doctype/page_role/README.md deleted file mode 100644 index f80d5a8ba4..0000000000 --- a/frappe/core/doctype/page_role/README.md +++ /dev/null @@ -1 +0,0 @@ -Role that has access to parent Page \ No newline at end of file diff --git a/frappe/core/doctype/page_role/__init__.py b/frappe/core/doctype/page_role/__init__.py deleted file mode 100644 index 4dbcd0d163..0000000000 --- a/frappe/core/doctype/page_role/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals diff --git a/frappe/core/doctype/page_role/page_role.py b/frappe/core/doctype/page_role/page_role.py deleted file mode 100644 index ffcd535bd1..0000000000 --- a/frappe/core/doctype/page_role/page_role.py +++ /dev/null @@ -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 \ No newline at end of file diff --git a/frappe/core/doctype/report/report.json b/frappe/core/doctype/report/report.json index f51170d0ce..49f4809e70 100644 --- a/frappe/core/doctype/report/report.json +++ b/frappe/core/doctype/report/report.json @@ -457,7 +457,7 @@ "label": "Roles", "length": 0, "no_copy": 0, - "options": "Report Role", + "options": "Has Role", "permlevel": 0, "precision": "", "print_hide": 0, diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index 00866e0922..dfaa2f3b2c 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -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: diff --git a/frappe/core/doctype/report/test_report.py b/frappe/core/doctype/report/test_report.py index 17625336c2..135186df2e 100644 --- a/frappe/core/doctype/report/test_report.py +++ b/frappe/core/doctype/report/test_report.py @@ -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: diff --git a/frappe/core/doctype/report_role/report_role.json b/frappe/core/doctype/report_role/report_role.json deleted file mode 100644 index f5dccc2500..0000000000 --- a/frappe/core/doctype/report_role/report_role.json +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/frappe/custom/doctype/customize_form/customize_form.js b/frappe/custom/doctype/customize_form/customize_form.js index 3b9b90da5e..ea947a18f0 100644 --- a/frappe/custom/doctype/customize_form/customize_form.js +++ b/frappe/custom/doctype/customize_form/customize_form.js @@ -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'] ] }; diff --git a/frappe/desk/desk_page.py b/frappe/desk/desk_page.py index 210dbb6fb8..fc7281e06c 100644 --- a/frappe/desk/desk_page.py +++ b/frappe/desk/desk_page.py @@ -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 diff --git a/frappe/modules/import_file.py b/frappe/modules/import_file.py index 3c27fca86e..b7697ca209 100644 --- a/frappe/modules/import_file.py +++ b/frappe/modules/import_file.py @@ -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): diff --git a/frappe/patches/v7_3/rename_page_role_to_has_role.py b/frappe/patches/v7_3/rename_page_role_to_has_role.py new file mode 100644 index 0000000000..7cc43c422c --- /dev/null +++ b/frappe/patches/v7_3/rename_page_role_to_has_role.py @@ -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') \ No newline at end of file