From 69631078baf33fbc782e316ef19a576fc8a27b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 2 May 2017 17:08:00 +0200 Subject: [PATCH] [IMP] resource: add iterator on work hours count between two datetimes --- addons/resource/models/resource.py | 10 ++++++++++ addons/resource/models/resource_mixin.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py index 86430822038..32da153366d 100644 --- a/addons/resource/models/resource.py +++ b/addons/resource/models/resource.py @@ -457,6 +457,16 @@ class ResourceCalendar(models.Model): if intervals: yield intervals + def _iter_work_hours_count(self, from_datetime, to_datetime, resource_id): + """ Lists the current resource's work hours count between the two provided + datetime expressed in naive UTC. """ + + for interval in self._iter_work_intervals(from_datetime, to_datetime, resource_id): + td = timedelta() + for work_interval in interval: + td += work_interval[1] - work_interval[0] + yield (interval[0][0].date(), td.total_seconds() / 3600.0) + def _iter_work_days(self, from_date, to_date, resource_id): """ Lists the current resource's work days between the two provided dates (inclusive) expressed in naive UTC. diff --git a/addons/resource/models/resource_mixin.py b/addons/resource/models/resource_mixin.py index bd9fcc2e640..de5a9b5ecb4 100644 --- a/addons/resource/models/resource_mixin.py +++ b/addons/resource/models/resource_mixin.py @@ -57,6 +57,10 @@ class ResourceMixin(models.AbstractModel): calendar = calendar or self.resource_calendar_id return calendar._iter_work_intervals(from_datetime, to_datetime, self.resource_id.id) + def iter_work_hours_count(self, from_datetime, to_datetime, calendar=None): + calendar = calendar or self.resource_calendar_id + return calendar._iter_work_hours_count(from_datetime, to_datetime, self.resource_id.id) + def get_leaves_day_count(self, from_datetime, to_datetime, calendar=None): """ Return the number of leave days for the resource, taking into account attendances. An optional calendar can be given in case multiple calendars