Xavier (Open ERP) has proposed merging
lp:~openerp-dev/openobject-server/trunk-read_group-dates-formatting-reformatting-xmo
into lp:openobject-server with
lp:~openerp-dev/openobject-server/trunk-read_group-dates-formatting-xmo as a
prerequisite.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-read_group-dates-formatting-reformatting-xmo/+merge/81877
Some reformatting and refactoring (mostly variable extraction) of the datetime
munging in read_group, to try and make the code clearer and more readable.
And stop doing string munging when we have perfectly good datetime objects to
manipulate
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-read_group-dates-formatting-reformatting-xmo/+merge/81877
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/trunk-read_group-dates-formatting-xmo.
=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py 2011-11-10 16:57:29 +0000
+++ openerp/osv/orm.py 2011-11-10 16:57:29 +0000
@@ -2463,23 +2463,25 @@
data.sort(lambda x,y: cmp(data_ids.index(x['id']), data_ids.index(y['id'])))
for d in data:
+ group_data = alldata[d['id']]
if groupby:
- d['__domain'] = [(groupby, '=', alldata[d['id']][groupby] or False)] + domain
+ grouping_value = group_data[groupby]
+ d['__domain'] = [(groupby, '=', grouping_value or False)] + domain
if not isinstance(groupby_list, (str, unicode)):
if groupby or not context.get('group_by_no_leaf', False):
d['__context'] = {'group_by': groupby_list[1:]}
- if groupby and groupby in fget:
- if d[groupby] and fget[groupby]['type'] in ('date', 'datetime'):
- dt = datetime.datetime.strptime(alldata[d['id']][groupby][:7], '%Y-%m')
- days = calendar.monthrange(dt.year, dt.month)[1]
-
- date_value = datetime.datetime.strptime(d[groupby][:10], '%Y-%m-%d')
- d[groupby] = babel.dates.format_date(
- date_value, format='MMMM yyyy', locale=context.get('lang', 'en_US'))
- d['__domain'] = [(groupby, '>=', alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-01', '%Y-%m-%d').strftime('%Y-%m-%d') or False),\
- (groupby, '<=', alldata[d['id']][groupby] and datetime.datetime.strptime(alldata[d['id']][groupby][:7] + '-' + str(days), '%Y-%m-%d').strftime('%Y-%m-%d') or False)] + domain
- del alldata[d['id']][groupby]
- d.update(alldata[d['id']])
+
+ if groupby in fget:
+ if d[groupby] and fget[groupby]['type'] in ('date', 'datetime'):
+ dt = datetime.datetime.strptime(grouping_value, '%Y-%m')
+ _, month_length = calendar.monthrange(dt.year, dt.month)
+
+ d[groupby] = babel.dates.format_date(
+ dt, format='MMMM yyyy', locale=context.get('lang', 'en_US'))
+ d['__domain'] = [(groupby, '>=', grouping_value and dt.replace(day=1).strftime('%Y-%m-%d') or False),
+ (groupby, '<=', grouping_value and dt.replace(day=month_length).strftime('%Y-%m-%d') or False)] + domain
+ del group_data[groupby]
+ d.update(group_data)
del d['id']
return data
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp