From 6dfc165193ccab3a2d48ee77307cddad92994323 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Mon, 16 Jul 2018 18:10:16 +0530 Subject: [PATCH] Add patch to skip user perm check for doctype (#14873) * Add patch to skip user perm check for doctype Skip user permission check for doctypes where department link field was recently added * Remove new doctype entries * Skip doctypes if department field already exists (custom field) * Add patch to set department value based on employee * Update set_department_for_doctypes.py * Update skip_user_permission_check_for_department.py --- erpnext/patches.txt | 2 ++ .../v11_0/set_department_for_doctypes.py | 16 +++++++++++ ...ip_user_permission_check_for_department.py | 28 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 erpnext/patches/v11_0/set_department_for_doctypes.py create mode 100644 erpnext/patches/v11_0/skip_user_permission_check_for_department.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index bd6d1c3bfe..d960caf01f 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -555,5 +555,7 @@ execute:frappe.db.sql("update `tabDesktop Icon` set type = 'module' where module erpnext.patches.v11_0.set_salary_component_properties erpnext.patches.v11_0.set_user_permissions_for_department erpnext.patches.v11_0.hr_ux_cleanups +erpnext.patches.v11_0.skip_user_permission_check_for_department +erpnext.patches.v11_0.set_department_for_doctype erpnext.patches.v11_0.update_allow_transfer_for_manufacture erpnext.patches.v11_0.rename_healthcare_doctype_and_fields diff --git a/erpnext/patches/v11_0/set_department_for_doctypes.py b/erpnext/patches/v11_0/set_department_for_doctypes.py new file mode 100644 index 0000000000..8fc6656396 --- /dev/null +++ b/erpnext/patches/v11_0/set_department_for_doctypes.py @@ -0,0 +1,16 @@ +import frappe + +# Set department value based on employee value + +def execute(): + + doctypes_to_update = ['Appraisal', 'Leave Allocation', 'Expense Claim', 'Instructor', 'Salary Slip', + 'Attendance', 'Training Feedback', 'Training Result Employee', + 'Leave Application', 'Employee Advance', 'Activity Cost', 'Training Event Employee', + 'Timesheet', 'Sales Person', 'Payroll Employee Detail'] + + for doctype in doctypes_to_update: + frappe.db.sql(""" + update `tab%s` dt + set department=(select department from `tabEmployee` where name=dt.employee) + """ % doctype) diff --git a/erpnext/patches/v11_0/skip_user_permission_check_for_department.py b/erpnext/patches/v11_0/skip_user_permission_check_for_department.py new file mode 100644 index 0000000000..123eed5aff --- /dev/null +++ b/erpnext/patches/v11_0/skip_user_permission_check_for_department.py @@ -0,0 +1,28 @@ +import frappe + +# Skips user permission check for doctypes where department link field was recently added +# https://github.com/frappe/erpnext/pull/14121 + +def execute(): + user_permissions = frappe.get_all("User Permission", + filters=[['allow', '=', 'Department']], + fields=['name', 'skip_for_doctype']) + + doctypes_to_skip = [] + + for doctype in ['Appraisal', 'Leave Allocation', 'Expense Claim', 'Instructor', 'Salary Slip', + 'Attendance', 'Training Feedback', 'Training Result Employee', + 'Leave Application', 'Employee Advance', 'Activity Cost', 'Training Event Employee', + 'Timesheet', 'Sales Person', 'Payroll Employee Detail']: + if frappe.db.exists('Custom Field', { 'dt': doctype, 'fieldname': 'department'}): continue + doctypes_to_skip.append(doctype) + + for perm in user_permissions: + skip_for_doctype = perm.get('skip_for_doctype') + + skip_for_doctype = skip_for_doctype.split('\n') + doctypes_to_skip + skip_for_doctype = set(skip_for_doctype) # to remove duplicates + skip_for_doctype = '\n'.join(skip_for_doctype) # convert back to string + + frappe.set_value('User Permission', perm.name, 'skip_for_doctype', skip_for_doctype) +