This question has been flagged
1 Reply
4934 Views

Hi everybody,

I work in different environment where I connect to OpenERP v7 through the XML-RPC protocol, but I have one probleme, In my environment I can't pass a domain for example :

EXECUTE dbname="demo" user=1 pwd="admin" model="res.partner" method="search" args=[(1,'=',1)]

the types here are String (for dbname, pwd, model, method) and Integer (for user) but for args my environment doesn't accept object or array of object or list so I have to pass the string such as

EXECUTE dbname="demo" user=1 pwd="admin" model="res.partner" method="search" args="[(1,'=',1)]"

I want now that I catch this String in the method execute and evaluate the string to domain, but where can I find the source of this method

Thanks in advance

Avatar
Discard
Best Answer

The same XMLRPC problem is addressed here for the connection with Talend "Big Data".

You have to overwrite the search (and also write, read, ..) function of the partner somehow like this:

    def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
        if isinstance(args, str):
            args = eval(args)

        return super(res_partner, self).search(cr, uid, args, offset, limit, order, context=context, count=count)

If you want to have this for all objects, then you can also adapt osv.osv.

Avatar
Discard
Author

Thanks for the reply, I hope that will work, I want to ask you if you know where the relation bewtween execute and search in this case, OpenERP catch first the execute paramaters, then It fetchs the method argument if equal to search it call search in the orm. I need this point if you know where is the source

The "method" is the python method of the related object ("model"). OpenERP directly calls the "method" and assumes that it has been defined in python.

Author

Ok, Thank you