From 86f5b6a926d5b0fa5b07ee943f6c84a904c48abd Mon Sep 17 00:00:00 2001 From: jem-odoo Date: Fri, 28 Jun 2019 12:32:16 +0000 Subject: [IMP] tools: get_timedelta helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit introduces a small helper to return a timedelta given a quantity and a time unit (day, hour, month, ...) Task-2024216 closes odoo/odoo#34576 Signed-off-by: Jérome Maes (jem) --- odoo/tools/date_utils.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'odoo/tools/date_utils.py') diff --git a/odoo/tools/date_utils.py b/odoo/tools/date_utils.py index 702913ff04e..c7b6d0800d1 100644 --- a/odoo/tools/date_utils.py +++ b/odoo/tools/date_utils.py @@ -80,6 +80,23 @@ def get_fiscal_year(date, day=31, month=12): return date_from, date_to +def get_timedelta(qty, granularity): + """ + Helper to get a `relativedelta` object for the given quantity and interval unit. + :param qty: the number of unit to apply on the timedelta to return + :param granularity: Type of period in string, can be year, quarter, month, week, day or hour. + + """ + switch = { + 'hour': relativedelta(hours=qty), + 'day': relativedelta(days=qty), + 'week': relativedelta(weeks=qty), + 'month': relativedelta(months=qty), + 'year': relativedelta(years=qty), + } + return switch[granularity] + + def start_of(value, granularity): """ Get start of a time period from a date or a datetime. @@ -193,6 +210,7 @@ def json_default(obj): return fields.Date.to_string(obj) return ustr(obj) + def date_range(start, end, step=relativedelta(months=1)): """Date range generator with a step interval. -- cgit v1.2.3