summaryrefslogtreecommitdiff
path: root/addons/website/models
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2014-02-05 10:04:47 +0100
committerThibault Delavallée <tde@openerp.com>2014-02-05 10:04:47 +0100
commit8df6b16784b64d4ebb375290f96a7c8e2fd4f949 (patch)
tree8afb21eb169d192ee0fed1935c920acca64cec70 /addons/website/models
parent6400ffb5e548d91548c828e14f980060b9fae191 (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__.py1
-rw-r--r--addons/website/models/ir_actions.py26
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