From 250772d403ddc0e5e0d5c503db6a8df805a6c166 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 20 Dec 2011 16:11:31 +0100 Subject: [PATCH] [FIX] read_group: NULL->False for grouped boolean fields We need to coalesce NULLs to False when grouping boolean fields, otherwise we get duplicate groups sharing the same rows. bzr revid: odo@openerp.com-20111220151131-xir8dv7sdy9hbrfx --- openerp/osv/orm.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 1ea7bcadaa8..b35432a88ef 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2479,10 +2479,13 @@ class BaseModel(object): group_count = group_by = groupby if groupby: if fget.get(groupby): - if fget[groupby]['type'] in ('date', 'datetime'): - flist = "to_char(%s,'yyyy-mm') as %s " % (qualified_groupby_field, groupby) - groupby = "to_char(%s,'yyyy-mm')" % (qualified_groupby_field) - qualified_groupby_field = groupby + groupby_type = fget[groupby]['type'] + if groupby_type in ('date', 'datetime'): + qualified_groupby_field = "to_char(%s,'yyyy-mm')" % qualified_groupby_field + flist = "%s as %s " % (qualified_groupby_field, groupby) + elif groupby_type == 'boolean': + qualified_groupby_field = "coalesce(%s,false)" % qualified_groupby_field + flist = "%s as %s " % (qualified_groupby_field, groupby) else: flist = qualified_groupby_field else: