[MERGE] [FIX] read_group: skip date(time) fields when generating the sql query, the monthly grouping is done afterward
lp bug: https://launchpad.net/bugs/1282485 fixed bzr revid: mat@openerp.com-20140220103351-n3ohwombd1kk802f bzr revid: mat@openerp.com-20140220145445-0xt7alp3uj0os1fz
This commit is contained in:
commit
9515daa3f8
|
@ -2605,19 +2605,24 @@ class BaseModel(object):
|
||||||
:param query: the query object used to construct the query afterwards
|
:param query: the query object used to construct the query afterwards
|
||||||
"""
|
"""
|
||||||
orderby_list = []
|
orderby_list = []
|
||||||
ob = ''
|
ob = []
|
||||||
for order_splits in orderby.split(','):
|
for order_splits in orderby.split(','):
|
||||||
order_split = order_splits.split()
|
order_split = order_splits.split()
|
||||||
orderby_field = order_split[0]
|
orderby_field = order_split[0]
|
||||||
|
fields = openerp.osv.fields
|
||||||
|
if isinstance(self._all_columns[orderby_field].column, (fields.date, fields.datetime)):
|
||||||
|
continue
|
||||||
orderby_dir = len(order_split) == 2 and order_split[1].upper() == 'ASC' and 'ASC' or 'DESC'
|
orderby_dir = len(order_split) == 2 and order_split[1].upper() == 'ASC' and 'ASC' or 'DESC'
|
||||||
if orderby_field == groupby:
|
if orderby_field == groupby:
|
||||||
ob = self._generate_order_by(order_splits, query).replace('ORDER BY ', '')
|
orderby_item = self._generate_order_by(order_splits, query).replace('ORDER BY ', '')
|
||||||
orderby_list.append(ob)
|
if orderby_item:
|
||||||
|
orderby_list.append(orderby_item)
|
||||||
|
ob += [obi.split()[0] for obi in orderby_item.split(',')]
|
||||||
elif orderby_field in aggregated_fields:
|
elif orderby_field in aggregated_fields:
|
||||||
orderby_list.append('%s %s' % (orderby_field,orderby_dir))
|
orderby_list.append('%s %s' % (orderby_field,orderby_dir))
|
||||||
|
|
||||||
if orderby_list:
|
if orderby_list:
|
||||||
return ' ORDER BY %s' % (','.join(orderby_list)), ob and ob.split()[0] or ''
|
return ' ORDER BY %s' % (','.join(orderby_list)), ob and ','.join(ob) or ''
|
||||||
else:
|
else:
|
||||||
return '', ''
|
return '', ''
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue