def test_single_assignment_projection(self): # 2 weeks, 60 hours start = utils.get_week_start() end = start + datetime.timedelta(weeks=2) - datetime.timedelta(days=1) ca = self._assign(start, end, hours=60) run_projection() self.assertEqual(60, ca.blocks.aggregate(s=Sum('hours'))['s'])
def test_this_weeks_hours(self): start = utils.get_week_start() end = start + datetime.timedelta(weeks=2) - datetime.timedelta(days=1) ca = self._assign(start, end, hours=60) run_projection() self.log_time(ca, start=start, delta=(10, 0)) assignments = timepiece.AssignmentAllocation.objects.during_this_week( self.ps.user) self.assertEquals(assignments.count(), 1) assignment = assignments[0] self.assertEquals(assignment.hours_worked, 10) self.assertEquals(assignment.hours_left, assignment.hours - 10)
def test_min_hours_per_week_weighted(self): """ Test minimum hours/week with weighting based on assignment end date """ start = utils.get_week_start() end = start + datetime.timedelta(weeks=1) ca1 = self._assign(start, end, hours=40) ca2 = self._assign(start, end + datetime.timedelta(days=1), hours=40) ca1.min_hours_per_week = 30 ca1.save() ca2.min_hours_per_week = 30 ca2.save() run_projection() projection = ca1.blocks.filter(date=start).aggregate(s=Sum('hours')) self.assertEqual(30, projection['s']) projection = ca2.blocks.filter(date=start).aggregate(s=Sum('hours')) self.assertEqual(10, projection['s'])
def test_this_weeks_allocations(self): # 2 weeks, 60 hours start = utils.get_week_start() end = start + datetime.timedelta(weeks=2) - datetime.timedelta(days=1) ca = self._assign(start, end, hours=20) person = User.objects.create_user('test2', '*****@*****.**', 'abc') ps = self.create_person_schedule(data={'user': person}) run_projection() assignments = timepiece.AssignmentAllocation.objects.during_this_week( self.ps.user) self.assertEquals(assignments.count(), 1) assignments = timepiece.AssignmentAllocation.objects.during_this_week( person) self.assertEquals(assignments.count(), 0) ca_2 = self._assign(start, end, hours=30) run_projection() assignments = timepiece.AssignmentAllocation.objects.during_this_week( self.ps.user) self.assertEquals(assignments.count(), 2)
def delete_model(self, request, obj): obj.delete() run_projection()
def save_model(self, request, obj, form, change): obj.save() run_projection()