openerp - How to create server actions in Odoo 10? -


in odoo 8, able define server action using xml such as:

<?xml version="1.0" encoding="utf-8" ?> <odoo>   <data>     <record id="action" model="ir.actions.server">       <field name="name">my action</field>       <field name="model_id" ref="model_module_model"/>       <field name="code">self.action(cr, uid, context=context)</field>     </record>   </data> </odoo> 

this execute module.model.action() method.

in odoo 10, code throws exception:

error:odoo.http:exception during json request handling. traceback (most recent call last): file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 638, in _handle_exception     return super(jsonrequest, self)._handle_exception(exception) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 675, in dispatch     result = self._call_function(**self.params) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 331, in _call_function     return checked_call(self.db, *args, **kwargs) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/service/model.py", line 119, in wrapper     return f(dbname, *args, **kwargs) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 324, in checked_call     result = self.endpoint(*a, **kw) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 933, in __call__     return self.method(*args, **kw) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/http.py", line 504, in response_wrap     response = f(*args, **kw) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/addons/web/controllers/main.py", line 1129, in run     result = request.env['ir.actions.server'].browse([action_id]).run() file "/usr/share/odoo/lib/python2.7/site-packages/odoo/addons/base/ir/ir_actions.py", line 964, in run     res = func(action, eval_context=eval_context) file "/usr/share/odoo/lib/python2.7/site-packages/odoo/addons/base/ir/ir_actions.py", line 793, in run_action_code_multi     safe_eval(action.code.strip(), eval_context, mode="exec", nocopy=true)  # nocopy allows return 'action' file "/usr/share/odoo/lib/python2.7/site-packages/odoo/tools/safe_eval.py", line 301, in safe_eval     return unsafe_eval(c, globals_dict, locals_dict) file "", line 1, in <module> valueerror: <type 'exceptions.nameerror'>: "name 'self' not defined" while evaluating u'self.action(cr, uid, context=context)' 

i'm not seeing interesting in odoo documentation server actions @ https://www.odoo.com/documentation/10.0/reference/actions.html#code

and docs explicitly state self part of evaluation context server actions, see https://www.odoo.com/documentation/10.0/reference/actions.html#reference-actions-server-context

how 1 create server actions in odoo 10?

there no need self object while declare server actions in odoo 10. can directly access model/object env['model.name']

try following code:

<?xml version="1.0" encoding="utf-8" ?> <odoo>   <data>     <record id="action" model="ir.actions.server">       <field name="name">my action</field>       <field name="model_id" ref="model_module_model"/>       <field name="code">         if context.get('active_model') == 'your.module.model' , context.get('active_ids'):                 action = env['module.model'].browse(context['active_ids']).action()     </record>   </data> </odoo> 

edit:

we can use these env['module.model'].action() execute method when there no active_ids


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -