def test_overlap_with_half_day(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") frappe.set_user("*****@*****.**") make_allocation_record() # allow second half-day on the same day if available application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.half_day = 1 application.insert() # allow second half-day on the same day if available application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.half_day = 1 application.insert() application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.half_day = 1 self.assertRaises(OverlapError, application.insert)
def test_global_block_list(self): self._clear_roles() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") self._add_employee_leave_approver("_T-Employee-0002", "*****@*****.**") make_allocation_record(employee="_T-Employee-0002") application = self.get_application(_test_records[1]) frappe.db.set_value("Leave Block List", "_Test Leave Block List", "applies_to_all_departments", 1) frappe.db.set_value("Employee", "_T-Employee-0002", "department", "_Test Department") frappe.set_user("*****@*****.**") application.insert() frappe.set_user("*****@*****.**") self.assertRaises(LeaveDayBlockedError, application.submit) frappe.db.set_value("Leave Block List", "_Test Leave Block List", "applies_to_all_departments", 0)
def test_overlap_with_half_day_1(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") frappe.set_user("*****@*****.**") make_allocation_record() # leave from 1-5, half day on 3rd application = self.get_application(_test_records[0]) application.half_day = 1 application.half_day_date = "2013-01-03" application.insert() # Apply again for a half day leave on 3rd application = self.get_application(_test_records[0]) application.from_date = "2013-01-03" application.to_date = "2013-01-03" application.half_day = 1 application.half_day_date = "2013-01-03" application.insert() # Apply again for a half day leave on 3rd application = self.get_application(_test_records[0]) application.from_date = "2013-01-03" application.to_date = "2013-01-03" application.half_day = 1 application.half_day_date = "2013-01-03" self.assertRaises(OverlapError, application.insert)
def test_block_list(self): self._clear_roles() from frappe.utils.user import add_role add_role("*****@*****.**", "HR User") add_role("*****@*****.**", "Leave Approver") clear_user_permissions_for_doctype("Employee") frappe.db.set_value("Department", "_Test Department", "leave_block_list", "_Test Leave Block List") make_allocation_record() application = self.get_application(_test_records[0]) application.insert() application.status = "Approved" self.assertRaises(LeaveDayBlockedError, application.submit) frappe.set_user("*****@*****.**") # clear other applications frappe.db.sql("delete from `tabLeave Application`") application = self.get_application(_test_records[0]) self.assertTrue(application.insert())
def test_global_block_list(self): self._clear_roles() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") self._add_employee_leave_approver("_T-Employee-0002", "*****@*****.**") make_allocation_record(employee="_T-Employee-0002") application = self.get_application(_test_records[1]) application.leave_approver = "*****@*****.**" frappe.db.set_value("Leave Block List", "_Test Leave Block List", "applies_to_all_departments", 1) frappe.db.set_value("Employee", "_T-Employee-0002", "department", "_Test Department") frappe.set_user("*****@*****.**") application.insert() frappe.set_user("*****@*****.**") application.status = "Approved" self.assertRaises(LeaveDayBlockedError, application.submit) frappe.db.set_value("Leave Block List", "_Test Leave Block List", "applies_to_all_departments", 0)
def test_renew_within_30_days(self): # create a membership for two months # Should work fine make_membership(self.member, {"from_date": nowdate()}) make_membership(self.member, {"from_date": add_months(nowdate(), 1)}) from frappe.utils.user import add_role add_role("*****@*****.**", "Non Profit Manager") frappe.set_user("*****@*****.**") # create next membership with expiry not within 30 days self.assertRaises( frappe.ValidationError, make_membership, self.member, { "from_date": add_months(nowdate(), 2), }, ) frappe.set_user("Administrator") # create the same membership but as administrator make_membership( self.member, { "from_date": add_months(nowdate(), 2), "to_date": add_months(nowdate(), 3), }, )
def test_overlap_with_half_day_3(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") frappe.set_user("*****@*****.**") make_allocation_record() # leave from 1-5, half day on 5th application = self.get_application(_test_records[0]) application.half_day = 1 application.half_day_date = "2013-01-05" application.insert() # Apply leave from 4-7, half day on 5th application = self.get_application(_test_records[0]) application.from_date = "2013-01-04" application.to_date = "2013-01-07" application.half_day = 1 application.half_day_date = "2013-01-05" self.assertRaises(OverlapError, application.insert) # Apply leave from 5-7, half day on 5th application = self.get_application(_test_records[0]) application.from_date = "2013-01-05" application.to_date = "2013-01-07" application.half_day = 1 application.half_day_date = "2013-01-05" application.insert()
def test_overlap_with_half_day_3(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") frappe.set_user("*****@*****.**") make_allocation_record() # leave from 1-5, half day on 5th application = self.get_application(_test_records[0]) application.half_day = 1 application.half_day_date = "2013-01-05" application.insert() # Apply leave from 4-7, half day on 5th application = self.get_application(_test_records[0]) application.from_date = "2013-01-04" application.to_date = "2013-01-07" application.half_day = 1 application.half_day_date = "2013-01-05" self.assertRaises(OverlapError, application.insert) # Apply leave from 5-7, half day on 5th application = self.get_application(_test_records[0]) application.from_date = "2013-01-05" application.to_date = "2013-01-07" application.half_day = 1 application.half_day_date = "2013-01-05" application.insert()
def setup_roles(self): from frappe.utils.user import add_role for d in frappe.get_meta('Roles Setup').fields: if d.fieldtype == "Link" and d.options == "User": if self.get(d.fieldname): add_role(self.get(d.fieldname), d.label) if d.fieldname in ['hr_manager', 'hr_user', 'hr_viewer']: clear_user_permissions_for_doctype( "Employee", self.get(d.fieldname))
def test_overlap(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") frappe.set_user("*****@*****.**") make_allocation_record() application = self.get_application(_test_records[0]) application.insert() application = self.get_application(_test_records[0]) self.assertRaises(OverlapError, application.insert)
def test_overlap(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") frappe.set_user("*****@*****.**") application = self.get_application(test_records[1]) application.leave_approver = "*****@*****.**" application.insert() application = self.get_application(test_records[1]) application.leave_approver = "*****@*****.**" self.assertRaises(OverlapError, application.insert)
def setup_roles(self): if not self.accounts_manager: frappe.throw(_("Accounts Manager is mandatory")) if not self.accounts_user: frappe.throw(_("Accounts User is mandatory")) if not self.hr_manager: frappe.throw(_("HR Manager is mandatory")) if not self.hr_user: frappe.throw(_("HR user is mandatory")) from frappe.utils.user import add_role for d in frappe.get_meta('System Setup').fields: if d.fieldtype == "Link" and d.options == "User": if self.get(d.fieldname): add_role(self.get(d.fieldname), d.label) if d.fieldname in ['hr_manager', 'hr_user']: clear_user_permissions_for_doctype("Employee", self.get(d.fieldname))
def test_leave_approval(self): self._clear_roles() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "HR User") add_role("*****@*****.**", "Leave Approver") add_role("*****@*****.**", "Leave Approver") self._test_leave_approval_basic_case() self._test_leave_approval_invalid_leave_approver_insert() self._test_leave_approval_invalid_leave_approver_submit() self._test_leave_approval_valid_leave_approver_insert()
def test_overlap_with_half_day_2(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") frappe.set_user("*****@*****.**") make_allocation_record() # leave from 1-5, no half day application = self.get_application(_test_records[0]) application.insert() # Apply again for a half day leave on 1st application = self.get_application(_test_records[0]) application.half_day = 1 application.half_day_date = application.from_date self.assertRaises(OverlapError, application.insert)
def update_user(self): # add employee role if missing if not "Employee" in frappe.db.sql_list( """select role from tabUserRole where parent=%s""", self.user_id): from frappe.utils.user import add_role add_role(self.user_id, "Employee") user_wrapper = frappe.get_doc("User", self.user_id) # copy details like Fullname, DOB and Image to User if self.employee_name: employee_name = self.employee_name.split(" ") if len(employee_name) >= 3: user_wrapper.last_name = " ".join(employee_name[2:]) user_wrapper.middle_name = employee_name[1] elif len(employee_name) == 2: user_wrapper.last_name = employee_name[1] user_wrapper.first_name = employee_name[0] if self.date_of_birth: user_wrapper.birth_date = self.date_of_birth if self.gender: user_wrapper.gender = self.gender if self.image: if not user_wrapper.user_image == self.image: user_wrapper.user_image = self.image try: frappe.get_doc({ "doctype": "File Data", "file_name": self.image, "attached_to_doctype": "User", "attached_to_name": self.user_id }).insert() except frappe.DuplicateEntryError, e: # already exists pass
def test_overlap_with_half_day_1(self): self._clear_roles() self._clear_applications() from frappe.utils.user import add_role add_role("*****@*****.**", "Employee") add_role("*****@*****.**", "Leave Approver") frappe.set_user("*****@*****.**") make_allocation_record() # leave from 1-5, half day on 3rd application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.half_day = 1 application.half_day_date = "2013-01-03" application.insert() # Apply again for a half day leave on 3rd application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.from_date = "2013-01-03" application.to_date = "2013-01-03" application.half_day = 1 application.half_day_date = "2013-01-03" application.insert() # Apply again for a half day leave on 3rd application = self.get_application(_test_records[0]) application.leave_approver = "*****@*****.**" application.from_date = "2013-01-03" application.to_date = "2013-01-03" application.half_day = 1 application.half_day_date = "2013-01-03" self.assertRaises(OverlapError, application.insert)
def after_insert(self): add_role(self.user, 'App User')