Skip to Content
Menu
This question has been flagged
1 Reply
1023 Views

I am new with odoo and xmlrpc request, if there is english mistakes or bad explaination, please ask for details.

I was coding when I found some data with the xmlrpc request that I've never seen before, and when I tried to find them on the web interface the data where missing.

uid=common_proxy.authenticate(db,username,api_key,{})

ids=object_proxy.execute_kw(db, uid, api_key, 'product.template', 'search', [[['name','like','Tôle 304L ép3']]])

read=object_proxy.execute_kw(db, uid, api_key, 'product.template', 'read', [ids], {'fields': ['default_code', 'name','id','display_name','bom_ids']})

print(len(ids))

for val in read : print(val)

print(len(read))


Thank to this code I find 5 different items with 5 same names, but different ids and different default_code. However when I go in my web interface and I search for "Tôle 304L ép3" nothing from my xmlrpc comes out (by nothing I mean no item with other field in common with the xmlrpc request) but the real item of this search.

And when I try to identify the items found with de xmlrpc request, in the web interface, I found some other item without link with the one found in python.

The result with the xmlrpc request is not exactly "Tôle 304L ép3" it is : 'Tôle 304L ép3 (copie)'.

One last thing is that the web interface default_code for the item that i'm looking for, are some of other item in the xmlrpc request.

Thank you very much.

Avatar
Discard
Author

Thank you it works now, I would have never thought about it. 

Have a nice day, Thank you.

Best Answer

Do you use multiple languages in Odoo? If you're trying to access data from the database in another language - I'm assuming French in your case - you have to specify this explicitly for RPC calls, because the records often differ. Try:

object_proxy.execute_kw(
db,
uid, 
api_key, 
'product.template', 
'search_read',
[],
{
'domain': [('name','like','Tôle 304L ép3'),],
'fields': ['name'],
'context' : {
'lang': "fr_FR"
}
}
)

object_proxy.execute_kw(
db,
uid, 
api_key, 
'product.template', 
'search_read',
[],
{
'domain': [('id', 'in', ids),],
'fields': ['default_code', 'name','id','display_name','bom_ids'],
'context' : {
'lang': "fr_FR"
}
}
)

Make sure that the ids variable is a list​ with id's, e.g., [1,2,3,...]​. This could be one reason for finding non-existent duplicates. I hope this helps!

Avatar
Discard