def test_employee_invalid_interval(): entries = ['2018-04-12T08:00:00','2018-04-12T12:00:00','2018-04-12T12:10:00','2018-04-12T12:11:00'] timesheet = TimeSheet(entries) employee = Employee(timesheet, default_workload, default_processor) assert employee.is_invalid_interval('2018-04-12') is True
def test_workedtime_incomplete_workday(): entries = ['2018-04-12T08:00:00','2018-04-12T12:00:00','2018-04-12T12:10:00','2018-04-12T12:11:00'] timesheet = TimeSheet(entries) employee = Employee(timesheet, default_workload, default_processor) assert str(employee.total_day_worked_time('2018-04-12')) == '4:01:00'
def test_workedtime_without_interval(): entries = ['2018-04-12T08:00:00','2018-04-12T20:00:00'] timesheet = TimeSheet(entries) employee = Employee(timesheet, default_workload, default_processor) assert str(employee.total_day_worked_time('2018-04-12')) == '12:00:00'
def test_workedtime_completed_workday_1_min_interval(): entries = ['2018-04-12T08:00:00','2018-04-12T12:00:00','2018-04-12T12:01:00','2018-04-12T18:00:00'] timesheet = TimeSheet(entries) employee = Employee(timesheet, default_workload, default_processor) assert str(employee.total_day_worked_time('2018-04-12')) == '9:59:00'
def test_total_interval_duration_with_1_min(): entries = ['2018-04-12T08:00:00','2018-04-12T12:00:00','2018-04-12T12:01:00','2018-04-12T21:01:00'] timesheet = TimeSheet(entries) employee = Employee(timesheet, default_workload, default_processor) assert str(employee.total_interval_duration('2018-04-12')) == '0:01:00'
def submit_time_sheet(request, employee): # default period is current month months = tshelpers.months today = datetime.date.today() period = '%s %d' % (months[today.month - 1], today.year) availableperiods = [] for month in months: availableperiods.append('%s %d' % (month, today.year)) timesheet_data = None message = '' if request.method == "POST": period = request.POST['period'] timesheet_data = tshelpers.generate_timesheet_data(employee, period) timesheet_db = TimeSheet.objects.filter( employee=employee, period=timesheet_data['period']) message = None # it the time sheet has already been submitted, correct information needs to be presented # with respect to balances if timesheet_db.count() > 0: timesheet_data = tshelpers.generate_timesheet_data( employee, period, timesheet_db[0], False) message = 'This time sheet has already been submitted' if timesheet_data['salary_sources'] == {}: message = "Time sheet can't be submitted.\nSalary assignment is missing." if request.POST['button'] == 'Submit': # check if already sumbitted if timesheet_data['salary_sources'] != {}: if timesheet_db.count() == 0: # need to calculate balances and use them here timesheet_obj = TimeSheet( employee=employee, period=timesheet_data['period'], submit_date=datetime.date.today(), approve_date=None, start_date=timesheet_data['dates'][0], end_date=timesheet_data['dates'][1]) timesheet_obj.leave_balance_before_HOLS = timesheet_data[ 'leave_data'][0] timesheet_obj.leave_balance_before_SICK = timesheet_data[ 'leave_data'][1] timesheet_obj.leave_earn_HOLS = timesheet_data[ 'leave_data'][2] timesheet_obj.leave_earn_SICK = timesheet_data[ 'leave_data'][3] timesheet_obj.leave_used_HOLS = timesheet_data[ 'leave_data'][4] timesheet_obj.leave_used_SICK = timesheet_data[ 'leave_data'][5] timesheet_obj.leave_balance_HOLS = timesheet_data[ 'leave_data'][6] timesheet_obj.leave_balance_SICK = timesheet_data[ 'leave_data'][7] timesheet_obj.save() tshelpers.send_notification(request, "SUBMITTED", timesheet_obj) message = 'Your time sheet for %s has been submitted for approval' % timesheet_data[ 'period'] return render( request, "time_sheet_submit.html", { 'employee': employee, 'period': period, 'availableperiods': availableperiods, 'timesheetdata': timesheet_data, 'viewdata': timesheet_data, 'message': message, })