From 49d789cf99440353a240fa329b79974773a423f2 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Tue, 26 Jul 2016 14:39:54 +0200 Subject: [PATCH] [FIX] base: widget duration - allow to round to avoid seconds Allow to round the duration to a minimal unit. Eg: 0.33 hour = 19.8 min = "19 minutes 48 seconds" if option {'widget'='duration', 'unit'='hour', 'round'='minute'} 0.33 hour => 20 min = "20 minutes" --- addons/website_event_track/models/event.py | 2 +- addons/website_event_track/views/website_event.xml | 2 +- openerp/addons/base/ir/ir_qweb.py | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py index fa16fc393db..0b9ee6db95a 100644 --- a/addons/website_event_track/models/event.py +++ b/addons/website_event_track/models/event.py @@ -45,7 +45,7 @@ class event_track(models.Model): 'Status', default='draft', required=True, copy=False, track_visibility='onchange') description = fields.Html('Track Description', translate=True) date = fields.Datetime('Track Date') - duration = fields.Float('Duration', digits=(16, 2), default=1.5) + duration = fields.Float('Duration', default=1.5) location_id = fields.Many2one('event.track.location', 'Room') event_id = fields.Many2one('event.event', 'Event', required=True) color = fields.Integer('Color Index') diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml index a02b8fed9d1..878a04d252c 100644 --- a/addons/website_event_track/views/website_event.xml +++ b/addons/website_event_track/views/website_event.xml @@ -249,7 +249,7 @@ Date

Duration
-
+
Location

diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index 5511298e746..4a7d820a0ff 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -942,7 +942,12 @@ class DurationConverter(osv.AbstractModel): factor = units[options['unit']] sections = [] + r = value * factor + if options.get('round') in units: + round_to = units[options['round']] + r = round(r / round_to) * round_to + for unit, secs_per_unit in TIMEDELTA_UNITS: v, r = divmod(r, secs_per_unit) if not v: continue