flyingL123
flyingL123

Reputation: 8076

How to call Odoo server using the API

I've defined a server action in Odoo 10. It's easy to create a button in a view to call that server action by using the server actions ID. For example, if there server action's ID was 123:

<button name="123" type="action" string="Run Action"/>

Is there any way to call this action via the API? I'm not sure how to do this since the server action does not have a method name. It's just an ID. I also need to able to pass context to the action. Is this possible?

Upvotes: 1

Views: 2379

Answers (1)

CZoellner
CZoellner

Reputation: 14768

In Odoo's base module the model ir.actions.server is defined (base/ir/ir_actions.py). There is a method called run which should be callable from the XMLRPC API.

To use a context, just add it on the call as keyword parameter (kwargs) named context, like:

models.execute_kw(db, uid, password,
    'res.partner', 'check_access_rights',
    ['read'], {'raise_exception': False, 'context': {'test': True}})

(Example was extended from the official example 'Calling Methods')

It seems to be a bit magic, but it's done here.

Upvotes: 2

Related Questions