c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #07745
Re: [Bug 689575] [NEW] XMLRPC can't handle non-strings as keys
On Monday 13 December 2010, you wrote:
> Public bug reported:
>
> I recently came across the problem described at
> http://www.openerp.com/forum/post22813.html - namely that several
> functions return dictionaries of the format {id1: result1, id2:
> result2}.
> I'm not very experienced with XMLRPC, so apologies if this is a problem
> specific to python's xmlrpclib, or my use of it.
>
That's a limitation of the XML-RPC library. We can't really do much about it,
as we don't want to redefine the protocols.
This is the reason, too, that we craft the result of some ORM functions, so
that they fit this limitation
--
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/689575
Title:
XMLRPC can't handle non-strings as keys
Status in OpenObject Server:
New
Bug description:
I recently came across the problem described at http://www.openerp.com/forum/post22813.html - namely that several functions return dictionaries of the format {id1: result1, id2: result2}.
When accessing these functions through XMLRPC (at least using python's xmlrpclib), the use of integer ids as keys causes an error. For example, the following code snippet (using get_product_available from addons/stock/product.py):
stocknum = sock.execute(db, uid, pass, 'product.product', 'get_product_available', p['id'], {'location': stockid})
Results in the traceback:
File "/usr/lib/python2.6/xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "/usr/lib/python2.6/xmlrpclib.py", line 1489, in __request
verbose=self.__verbose
File "/usr/lib/python2.6/xmlrpclib.py", line 1253, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib/python2.6/xmlrpclib.py", line 1392, in _parse_response
return u.close()
File "/usr/lib/python2.6/xmlrpclib.py", line 838, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:dictionary key must be string">
I'm not very experienced with XMLRPC, so apologies if this is a problem specific to python's xmlrpclib, or my use of it.
But if not, then perhaps a solution similar to the last patch proposed on the above forum post - ensuring dict keys are run through str() - would be wise.
This is with OpenERP 5 rev. 2159.
References