Skip to content
Snippets Groups Projects
Commit 84a650e3 authored by Thibault Delavallée's avatar Thibault Delavallée
Browse files

[FIX] resource: fix computation of limited attendances

Due to an error introduced when migrating the module at new API
at commit a4e57ea1 limited attendances
having date_from and / or date_to were not correctly taken into
account.

Tests have been added to avoid regression.
parent 5869cd6b
No related branches found
No related tags found
No related merge requests found
......@@ -151,14 +151,17 @@ class ResourceCalendar(models.Model):
# --------------------------------------------------
@api.multi
def get_attendances_for_weekday(self, date):
""" Given a list of weekdays, return matching resource.calendar.attendance"""
def get_attendances_for_weekday(self, day_dt):
""" Given a day datetime, return matching attendances """
self.ensure_one()
weekday = date.weekday()
date = fields.Date.today()
weekday = day_dt.weekday()
attendances = self.env['resource.calendar.attendance']
for attendance in self.attendance_ids.filtered(lambda att: int(att.dayofweek) == weekday and
not ((att.date_from and date < att.date_from) or (att.date_to and date > att.date_to))):
for attendance in self.attendance_ids.filtered(
lambda att:
int(att.dayofweek) == weekday and
not (att.date_from and fields.Date.from_string(att.date_from) > day_dt.date()) and
not (att.date_to and fields.Date.from_string(att.date_to) < day_dt.date())):
attendances |= attendance
return attendances
......
......@@ -162,6 +162,38 @@ class TestResource(TestResourceCommon):
self.assertEqual(intervals[1][0], Datetime.from_string('2013-02-19 12:00:00'), 'resource_calendar: wrong working intervals')
self.assertEqual(intervals[1][1], Datetime.from_string('2013-02-19 15:45:30'), 'resource_calendar: wrong working intervals')
def test_21_calendar_working_intervals_limited_attendances(self):
""" Test attendances limited in time. """
self.env['resource.calendar.attendance'].browse(self.att3_id).write({
'date_from': self.date2 + relativedelta(days=7),
'date_to': False,
})
intervals = self.calendar.get_working_intervals_of_day(start_dt=self.date2)
self.assertEqual(intervals, [(Datetime.from_string('2013-02-15 10:11:12'), Datetime.from_string('2013-02-15 13:00:00'))])
self.env['resource.calendar.attendance'].browse(self.att3_id).write({
'date_from': False,
'date_to': self.date2 - relativedelta(days=7),
})
intervals = self.calendar.get_working_intervals_of_day(start_dt=self.date2)
self.assertEqual(intervals, [(Datetime.from_string('2013-02-15 10:11:12'), Datetime.from_string('2013-02-15 13:00:00'))])
self.env['resource.calendar.attendance'].browse(self.att3_id).write({
'date_from': self.date2 + relativedelta(days=7),
'date_to': self.date2 - relativedelta(days=7),
})
intervals = self.calendar.get_working_intervals_of_day(start_dt=self.date2)
self.assertEqual(intervals, [(Datetime.from_string('2013-02-15 10:11:12'), Datetime.from_string('2013-02-15 13:00:00'))])
self.env['resource.calendar.attendance'].browse(self.att3_id).write({
'date_from': self.date2,
'date_to': self.date2,
})
intervals = self.calendar.get_working_intervals_of_day(start_dt=self.date2)
self.assertEqual(len(intervals), 2)
self.assertEqual(intervals[0], (Datetime.from_string('2013-02-15 10:11:12'), Datetime.from_string('2013-02-15 13:00:00')))
self.assertEqual(intervals[1], (Datetime.from_string('2013-02-15 16:00:00'), Datetime.from_string('2013-02-15 23:00:00')))
def test_30_calendar_working_days(self):
""" Testing calendar hours computation on a working day """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment