From 38dedf402b005f170946924bf2c14c560a166449 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 30 May 2014 20:37:46 +0530 Subject: [PATCH] Fixes in patches for migration --- erpnext/hr/doctype/employee/employee.py | 10 +++++----- erpnext/patches/v4_0/apply_user_permissions.py | 2 +- .../v4_0/remove_employee_role_if_no_employee.py | 11 +++++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index 4e0c2685a7..01ab91db27 100644 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -6,7 +6,7 @@ import frappe from frappe.utils import getdate, validate_email_add, cint from frappe.model.naming import make_autoname -from frappe import throw, _ +from frappe import throw, _, msgprint import frappe.permissions from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc @@ -144,12 +144,12 @@ class Employee(Document): throw(_("User {0} is already assigned to Employee {1}").format(self.user_id, employee[0])) def validate_employee_leave_approver(self): - from frappe.utils.user import User from erpnext.hr.doctype.leave_application.leave_application import InvalidLeaveApproverError - for l in self.get("employee_leave_approvers"): - if "Leave Approver" not in User(l.leave_approver).get_roles(): - throw(_("{0} is not a valid Leave Approver").format(l.leave_approver), InvalidLeaveApproverError) + for l in self.get("employee_leave_approvers")[:]: + if "Leave Approver" not in frappe.get_roles(l.leave_approver): + self.get("employee_leave_approvers").remove(l) + msgprint(_("{0} is not a valid Leave Approver. Removing row #{1}.").format(l.leave_approver, l.idx)) def update_dob_event(self): if self.status == "Active" and self.date_of_birth \ diff --git a/erpnext/patches/v4_0/apply_user_permissions.py b/erpnext/patches/v4_0/apply_user_permissions.py index e32e3e1726..36c778195b 100644 --- a/erpnext/patches/v4_0/apply_user_permissions.py +++ b/erpnext/patches/v4_0/apply_user_permissions.py @@ -25,7 +25,7 @@ def update_hr_permissions(): frappe.clear_cache() # save employees to run on_update events - for employee in frappe.db.sql_list("""select name from `tabEmployee`"""): + for employee in frappe.db.sql_list("""select name from `tabEmployee` where docstatus < 2"""): try: frappe.get_doc("Employee", employee).save() except EmployeeUserDisabledError: diff --git a/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py b/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py index 76ec1a7c38..c1f368949f 100644 --- a/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py +++ b/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py @@ -9,7 +9,10 @@ def execute(): for user in frappe.db.sql_list("select distinct parent from `tabUserRole` where role='Employee'"): # if employee record does not exists, remove employee role! if not frappe.db.get_value("Employee", {"user_id": user}): - user = frappe.get_doc("User", user) - for role in user.get("user_roles", {"role": "Employee"}): - user.get("user_roles").remove(role) - user.save() + try: + user = frappe.get_doc("User", user) + for role in user.get("user_roles", {"role": "Employee"}): + user.get("user_roles").remove(role) + user.save() + except frappe.DoesNotExistError: + pass