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
=== modified file 'bin/addons/base/res/res_currency.py'
--- bin/addons/base/res/res_currency.py 2011-10-12 14:15:50 +0000
+++ bin/addons/base/res/res_currency.py 2012-02-29 10:52:20 +0000
@@ -78,7 +78,10 @@
78 _constraints = [(_check_rounding, "The rounding factor cannot be 0 !", ['rounding'])]78 _constraints = [(_check_rounding, "The rounding factor cannot be 0 !", ['rounding'])]
7979
80 def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):80 def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
81 res=super(osv.osv, self).read(cr, user, ids, fields, context, load)81 select = ids
82 if isinstance(ids, (int, long)):
83 select = [select]
84 res = super(osv.osv, self).read(cr, user, select, fields, context, load)
82 for r in res:85 for r in res:
83 if r.__contains__('rate_ids'):86 if r.__contains__('rate_ids'):
84 rates=r['rate_ids']87 rates=r['rate_ids']
@@ -86,6 +89,8 @@
86 currency_rate_obj= self.pool.get('res.currency.rate')89 currency_rate_obj= self.pool.get('res.currency.rate')
87 currency_date = currency_rate_obj.read(cr,user,rates[0],['name'])['name']90 currency_date = currency_rate_obj.read(cr,user,rates[0],['name'])['name']
88 r['date'] = currency_date91 r['date'] = currency_date
92 if isinstance(ids, (int, long)):
93 return res and res[0] or False
89 return res94 return res
9095
91 def round(self, cr, uid, currency, amount):96 def round(self, cr, uid, currency, amount):