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)
Exemple #2
0
    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)
Exemple #3
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_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)
Exemple #7
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()
Exemple #9
0
    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))
Exemple #11
0
	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")
		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 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)
Exemple #18
0
    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')