From 3d09395d2a558cfa2fb14dc7e76e5b4574984bdc Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 8 Mar 2017 13:35:24 +0530 Subject: [PATCH] Merge has role patch into one file --- frappe/patches.txt | 6 +- frappe/patches/v7_3/__init__.py | 0 .../v7_3/copy_user_roles_to_has_roles.py | 17 ---- frappe/patches/v7_3/remove_doctypes.py | 10 --- .../v7_3/rename_page_role_to_has_role.py | 14 --- .../v7_3/set_ref_doctype_roles_to_report.py | 16 ---- ...set_user_permission_for_page_and_report.py | 44 ---------- .../v8_0/rename_page_role_to_has_role.py | 87 +++++++++++++++++++ 8 files changed, 88 insertions(+), 106 deletions(-) delete mode 100644 frappe/patches/v7_3/__init__.py delete mode 100644 frappe/patches/v7_3/copy_user_roles_to_has_roles.py delete mode 100644 frappe/patches/v7_3/remove_doctypes.py delete mode 100644 frappe/patches/v7_3/rename_page_role_to_has_role.py delete mode 100644 frappe/patches/v7_3/set_ref_doctype_roles_to_report.py delete mode 100644 frappe/patches/v7_3/set_user_permission_for_page_and_report.py create mode 100644 frappe/patches/v8_0/rename_page_role_to_has_role.py diff --git a/frappe/patches.txt b/frappe/patches.txt index c63bcf9178..1f87254c60 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -4,11 +4,6 @@ execute:frappe.utils.global_search.setup_global_search_table() frappe.patches.v8_0.update_global_search_table frappe.patches.v7_0.update_auth frappe.patches.v7_1.rename_scheduler_log_to_error_log -frappe.patches.v7_3.rename_page_role_to_has_role -frappe.patches.v7_3.set_ref_doctype_roles_to_report -frappe.patches.v7_3.copy_user_roles_to_has_roles -frappe.patches.v7_3.set_user_permission_for_page_and_report -frappe.patches.v7_3.remove_doctypes frappe.patches.v6_1.rename_file_data frappe.patches.v7_0.re_route #2016-06-27 frappe.patches.v7_2.remove_in_filter @@ -17,6 +12,7 @@ execute:frappe.reload_doc('core', 'doctype', 'docfield', force=True) #2017-03-03 execute:frappe.reload_doc('core', 'doctype', 'docperm') #2017-03-03 execute:frappe.reload_doc('core', 'doctype', 'custom_docperm') frappe.patches.v7_2.setup_custom_perms #2017-01-19 +frappe.patches.v8_0.rename_page_role_to_has_role execute:frappe.reload_doc('core', 'doctype', 'role') execute:frappe.reload_doc('core', 'doctype', 'user') execute:frappe.reload_doc('core', 'doctype', 'deleted_document') diff --git a/frappe/patches/v7_3/__init__.py b/frappe/patches/v7_3/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frappe/patches/v7_3/copy_user_roles_to_has_roles.py b/frappe/patches/v7_3/copy_user_roles_to_has_roles.py deleted file mode 100644 index 7767a5e347..0000000000 --- a/frappe/patches/v7_3/copy_user_roles_to_has_roles.py +++ /dev/null @@ -1,17 +0,0 @@ -# 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(): - for data in frappe.get_all('User', fields = ["name"]): - doc = frappe.get_doc('User', data.name) - doc.set('roles',[]) - for args in frappe.get_all('UserRole', fields = ["role"], - filters = {'parent': data.name, 'parenttype': 'User'}): - doc.append('roles', { - 'role': args.role - }) - for role in doc.roles: - role.db_update() \ No newline at end of file diff --git a/frappe/patches/v7_3/remove_doctypes.py b/frappe/patches/v7_3/remove_doctypes.py deleted file mode 100644 index e6069a8037..0000000000 --- a/frappe/patches/v7_3/remove_doctypes.py +++ /dev/null @@ -1,10 +0,0 @@ -# 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(): - for doctype in ['UserRole', 'Event Role']: - if frappe.db.exists('DocType', doctype): - frappe.delete_doc('DocType', doctype) \ No newline at end of file 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 deleted file mode 100644 index 1b323665e2..0000000000 --- a/frappe/patches/v7_3/rename_page_role_to_has_role.py +++ /dev/null @@ -1,14 +0,0 @@ -# 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') - - frappe.reload_doc("core", 'doctype', "page") - frappe.reload_doc("core", 'doctype', "report") - frappe.reload_doc("core", 'doctype', "user") - frappe.reload_doc("core", 'doctype', "has_role") \ No newline at end of file diff --git a/frappe/patches/v7_3/set_ref_doctype_roles_to_report.py b/frappe/patches/v7_3/set_ref_doctype_roles_to_report.py deleted file mode 100644 index 7bf7ba335f..0000000000 --- a/frappe/patches/v7_3/set_ref_doctype_roles_to_report.py +++ /dev/null @@ -1,16 +0,0 @@ -# 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(): - for data in frappe.get_all('Report', fields=["name"]): - doc = frappe.get_doc('Report', data.name) - if frappe.db.exists("DocType", doc.ref_doctype): - try: - doc.set_doctype_roles() - for row in doc.roles: - row.db_update() - except: - pass \ No newline at end of file diff --git a/frappe/patches/v7_3/set_user_permission_for_page_and_report.py b/frappe/patches/v7_3/set_user_permission_for_page_and_report.py deleted file mode 100644 index 4d2dd8f399..0000000000 --- a/frappe/patches/v7_3/set_user_permission_for_page_and_report.py +++ /dev/null @@ -1,44 +0,0 @@ -# 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(): - frappe.reload_doc("core", 'doctype', "custom_role") - make_custom_roles_for_page_and_report() - -def make_custom_roles_for_page_and_report(): - for doctype in ['Page', 'Report']: - for data in get_data(doctype): - doc = frappe.get_doc(doctype, data.name) - roles = get_roles(doctype, data, doc) - make_custom_roles(doctype, doc.name, roles) - -def get_data(doctype): - fields = ["name"] if doctype == 'Page' else ["name", "ref_doctype"] - return frappe.get_all(doctype, fields = fields) - -def get_roles(doctype, data, doc): - roles = [] - if doctype == 'Page': - for d in doc.roles: - if frappe.db.exists('Role', d.role): - roles.append({'role': d.role}) - else: - out = frappe.get_all('Custom DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype)) - if not out: - out = frappe.get_all('DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype)) - for d in out: - roles.append({'role': d.role}) - return roles - -def make_custom_roles(doctype, name, roles): - field = doctype.lower() - - if roles: - custom_permission = frappe.get_doc({ - 'doctype': 'Custom Role', - field : name, - 'roles' : roles - }).insert() \ No newline at end of file diff --git a/frappe/patches/v8_0/rename_page_role_to_has_role.py b/frappe/patches/v8_0/rename_page_role_to_has_role.py new file mode 100644 index 0000000000..3432aa27c4 --- /dev/null +++ b/frappe/patches/v8_0/rename_page_role_to_has_role.py @@ -0,0 +1,87 @@ +# 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') + reload_doc() + set_ref_doctype_roles_to_report() + copy_user_roles_to_has_roles() + set_user_permission_for_page_and_report() + remove_doctypes() + +def reload_doc(): + frappe.reload_doc("core", 'doctype', "page") + frappe.reload_doc("core", 'doctype', "report") + frappe.reload_doc("core", 'doctype', "user") + frappe.reload_doc("core", 'doctype', "has_role") + frappe.reload_doc("core", 'doctype', "custom_role") + +def set_ref_doctype_roles_to_report(): + for data in frappe.get_all('Report', fields=["name"]): + doc = frappe.get_doc('Report', data.name) + if frappe.db.exists("DocType", doc.ref_doctype): + try: + doc.set_doctype_roles() + for row in doc.roles: + row.db_update() + except: + pass + +def copy_user_roles_to_has_roles(): + for data in frappe.get_all('User', fields = ["name"]): + doc = frappe.get_doc('User', data.name) + doc.set('roles',[]) + for args in frappe.get_all('UserRole', fields = ["role"], + filters = {'parent': data.name, 'parenttype': 'User'}): + doc.append('roles', { + 'role': args.role + }) + for role in doc.roles: + role.db_update() + +def set_user_permission_for_page_and_report(): + make_custom_roles_for_page_and_report() + +def make_custom_roles_for_page_and_report(): + for doctype in ['Page', 'Report']: + for data in get_data(doctype): + doc = frappe.get_doc(doctype, data.name) + roles = get_roles(doctype, data, doc) + make_custom_roles(doctype, doc.name, roles) + +def get_data(doctype): + fields = ["name"] if doctype == 'Page' else ["name", "ref_doctype"] + return frappe.get_all(doctype, fields = fields) + +def get_roles(doctype, data, doc): + roles = [] + if doctype == 'Page': + for d in doc.roles: + if frappe.db.exists('Role', d.role): + roles.append({'role': d.role}) + else: + out = frappe.get_all('Custom DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype)) + if not out: + out = frappe.get_all('DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype)) + for d in out: + roles.append({'role': d.role}) + return roles + +def make_custom_roles(doctype, name, roles): + field = doctype.lower() + + if roles: + custom_permission = frappe.get_doc({ + 'doctype': 'Custom Role', + field : name, + 'roles' : roles + }).insert() + +def remove_doctypes(): + for doctype in ['UserRole', 'Event Role']: + if frappe.db.exists('DocType', doctype): + frappe.delete_doc('DocType', doctype)