diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-02-05 10:04:47 +0100 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-02-05 10:04:47 +0100 |
| commit | 8df6b16784b64d4ebb375290f96a7c8e2fd4f949 (patch) | |
| tree | 8afb21eb169d192ee0fed1935c920acca64cec70 /addons/website/models | |
| parent | 6400ffb5e548d91548c828e14f980060b9fae191 (diff) | |
[ADD] website: added support for invoking a server action through controller
website: added website/action/<id_or_xml_id> route, that runs the server action designed
by its id or xml_id. Only code server action returning a template give a result. The
template is displayed. Other or not existing server actions redirect to the homepage.
website: added an override of ir_actions_server: evaluation context gets request for
evaluation, to enable request.render(template_name); also returns template the same
way action is returned for code server action;
bzr revid: tde@openerp.com-20140205090447-2hppg7818nx1wfzh
Diffstat (limited to 'addons/website/models')
| -rw-r--r-- | addons/website/models/__init__.py | 1 | ||||
| -rw-r--r-- | addons/website/models/ir_actions.py | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/addons/website/models/__init__.py b/addons/website/models/__init__.py index e17fba63e39..da3c232a24e 100644 --- a/addons/website/models/__init__.py +++ b/addons/website/models/__init__.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +import ir_actions import ir_ui_view import website import ir_qweb diff --git a/addons/website/models/ir_actions.py b/addons/website/models/ir_actions.py new file mode 100644 index 00000000000..c6b71e51e1e --- /dev/null +++ b/addons/website/models/ir_actions.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from openerp.addons.web.http import request +from openerp.osv import fields, osv + + +class actions_server(osv.Model): + """ Add website option in server actions. """ + _name = 'ir.actions.server' + _inherit = ['ir.actions.server'] + + # _columns = { + # 'website': fields.boolean('Website Stuff'), + # } + + def _get_eval_context(self, cr, uid, action, context=None): + eval_context = super(actions_server, self)._get_eval_context(cr, uid, action, context=context) + if action.state == 'code': + eval_context['request'] = request + return eval_context + + def run_action_code_multi(self, cr, uid, action, eval_context=None, context=None): + res = super(actions_server, self).run_action_code_multi(cr, uid, action, eval_context, context) + if 'template' in eval_context: + return eval_context['template'] + return res |
