Merge lp:~openerp-dev/openobject-server/6.0-opw-441976-rgo into lp:openobject-server/6.0

Proposed by Ravi Gohil (OpenERP)
Status: Merged
Approved by: Naresh(OpenERP)
Approved revision: 3595
Merged at revision: 3598
Proposed branch: lp:~openerp-dev/openobject-server/6.0-opw-441976-rgo
Merge into: lp:openobject-server/6.0
Diff against target: 24 lines (+6/-1)
1 file modified
bin/addons/base/res/res_currency.py (+6/-1)
To merge this branch: bzr merge lp:~openerp-dev/openobject-server/6.0-opw-441976-rgo
Reviewer Review Type Date Requested Status
Naresh(OpenERP) (community) Approve
Review via email: mp+94936@code.launchpad.net

Description of the change

Hello,

When an Integer 'ids' is supplied as parameter of read() method, a traceback is caused because a dict will be return by the execution of next statement(when passed 'ids' as integer) that is 'res=super(osv.osv, self).read(cr, user, ids, fields, context, load)' whereas a list of dict is expected to execute the code within next looping statement.

I modified the code accordingly. Kindly review it.

Thanks.

To post a comment you must log in.
3594. By Xavier ALT

[REVERT] r3583: revert back res.log context field to fields.char(size=255)

3595. By Ravi Gohil (OpenERP)

[FIX] res_currency: When passed integer 'ids' as parameter to read() of res_currency instead of 'ids' as list, traceback is caused(Maintenance Case : 441976)

Revision history for this message
Naresh(OpenERP) (nch-openerp) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/addons/base/res/res_currency.py'
2--- bin/addons/base/res/res_currency.py 2011-10-12 14:15:50 +0000
3+++ bin/addons/base/res/res_currency.py 2012-02-29 10:52:20 +0000
4@@ -78,7 +78,10 @@
5 _constraints = [(_check_rounding, "The rounding factor cannot be 0 !", ['rounding'])]
6
7 def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
8- res=super(osv.osv, self).read(cr, user, ids, fields, context, load)
9+ select = ids
10+ if isinstance(ids, (int, long)):
11+ select = [select]
12+ res = super(osv.osv, self).read(cr, user, select, fields, context, load)
13 for r in res:
14 if r.__contains__('rate_ids'):
15 rates=r['rate_ids']
16@@ -86,6 +89,8 @@
17 currency_rate_obj= self.pool.get('res.currency.rate')
18 currency_date = currency_rate_obj.read(cr,user,rates[0],['name'])['name']
19 r['date'] = currency_date
20+ if isinstance(ids, (int, long)):
21+ return res and res[0] or False
22 return res
23
24 def round(self, cr, uid, currency, amount):