diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-02-01 18:20:28 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-02-01 18:20:28 +0100 |
| commit | e00a447e2ca277697bd3e3cae5196e8177d3e867 (patch) | |
| tree | c8580e47f101f75ceccd6ba19f9649b575f99177 /addons/resource | |
| parent | cde120058aa4edd259b7d7e1624465af313710fe (diff) | |
| parent | 7e469eb77aae1f7e05a3ce0f6575b5149fed3ca1 (diff) | |
[MERGE] forward port branch saas-11.1 up to 7e469eb77aa
Diffstat (limited to 'addons/resource')
| -rw-r--r-- | addons/resource/models/resource.py | 10 | ||||
| -rw-r--r-- | addons/resource/tests/test_resource.py | 6 |
2 files changed, 12 insertions, 4 deletions
diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index 5a34afa53a4..b7e2cb4ab62 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -142,6 +142,8 @@ class ResourceCalendar(models.Model): ) def _interval_and(self, interval, interval_dst): + if interval.start_datetime > interval_dst.end_datetime or interval.end_datetime < interval_dst.start_datetime: + return None return self._interval_obj( interval.start_datetime > interval_dst.start_datetime and interval.start_datetime or interval_dst.start_datetime, interval.end_datetime < interval_dst.end_datetime and interval.end_datetime or interval_dst.end_datetime, @@ -406,10 +408,10 @@ class ResourceCalendar(models.Model): start_datetime=datetime.datetime.combine(day_date, start_time), end_datetime=datetime.datetime.combine(day_date, end_time)) - final_intervals = [ - self._interval_and(leave_interval, work_interval) - for leave_interval in leaves_intervals - for work_interval in working_intervals] + final_intervals = [i for i in + [self._interval_and(leave_interval, work_interval) + for leave_interval in leaves_intervals + for work_interval in working_intervals] if i] # adapt tz return [self._interval_new( diff --git a/addons/resource/tests/test_resource.py b/addons/resource/tests/test_resource.py index 617d6f9b79e..f31a89399dd 100644 --- a/addons/resource/tests/test_resource.py +++ b/addons/resource/tests/test_resource.py @@ -55,6 +55,12 @@ class TestIntervals(TestResourceCommon): # Third interval: 04, 17-21, 18-19 being inside 17-21 self.assertEqual(cleaned_intervals[2][:2], (Datetime.from_string('2013-02-04 17:00:00'), Datetime.from_string('2013-02-04 21:00:00'))) + def test_interval_and(self): + self.assertEqual(self.env['resource.calendar']._interval_and(self.intervals[0], self.intervals[1]), + self.calendar._interval_new(Datetime.from_string('2013-02-04 09:00:00'), Datetime.from_string('2013-02-04 11:00:00'))) + self.assertEqual(self.env['resource.calendar']._interval_and(self.intervals[2], self.intervals[3]), + None) + def test_interval_remove(self): working_interval = self.calendar._interval_new(Datetime.from_string('2013-02-04 08:00:00'), Datetime.from_string('2013-02-04 18:00:00')) result = self.env['resource.calendar']._interval_remove_leaves(working_interval, self.intervals) |
