summaryrefslogtreecommitdiff
path: root/addons/resource
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-02-01 18:20:28 +0100
committerChristophe Simonis <chs@odoo.com>2018-02-01 18:20:28 +0100
commite00a447e2ca277697bd3e3cae5196e8177d3e867 (patch)
treec8580e47f101f75ceccd6ba19f9649b575f99177 /addons/resource
parentcde120058aa4edd259b7d7e1624465af313710fe (diff)
parent7e469eb77aae1f7e05a3ce0f6575b5149fed3ca1 (diff)
[MERGE] forward port branch saas-11.1 up to 7e469eb77aa
Diffstat (limited to 'addons/resource')
-rw-r--r--addons/resource/models/resource.py10
-rw-r--r--addons/resource/tests/test_resource.py6
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)