From 4836945bc9aeafe855b20777f566b620c3d3078d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 29 Aug 2011 17:24:38 +0200 Subject: [PATCH 1/3] [imp] default setup for reports + put active_id in all actions coming from the sidebar bzr revid: nicolas.vanhoren@openerp.com-20110829152438-47y13wwh01ssq9ts --- addons/base/controllers/main.py | 12 ++++++++++++ addons/base/static/src/js/views.js | 21 ++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 562571f10de..a198fbde0d1 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -1275,3 +1275,15 @@ class Export(View): return export_xls(field, result) else: return export_csv(field, result) + +class Export(View): + _cp_path = "/base/report" + + @openerpweb.jsonrequest + def get_report(self, req, action): + report_srv = req.session.proxy("report") + context = req.session.eval_context(openerpweb.nonliterals.CompoundContext(req.context, \ + action["context"])) + return False + #report_srv.report(req.session._db, req.session._uid, req.session._password) + diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 0fd3df3998d..1fc04bf8965 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -123,6 +123,14 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this.content_stop(); var ClientWidget = openerp.base.client_actions.get_object(action.tag); (this.client_widget = new ClientWidget(this, action.params)).appendTo(this); + }, + ir_actions_report_xml: function(action) { + this.rpc('/base/report/get_report', { + action: action, + context: {} + }).then(function(result) { + debugger; + }); } }); @@ -438,14 +446,17 @@ openerp.base.Sidebar = openerp.base.Widget.extend({ //TODO niv: maybe show a warning? return false; } + var additional_context = { + active_id: ids[0], + active_ids: ids, + active_model: self.widget_parent.dataset.model + }; self.rpc("/base/action/load", { action_id: item.action.id, - context: { - active_id: ids[0], - active_ids: ids, - active_model: self.widget_parent.dataset.model - } + context: additional_context }, function(result) { + result.result.context = _.extend(result.result.context || {}, + additional_context); result.result.flags = result.result.flags || {}; result.result.flags.new_window = true; self.do_action(result.result); From 73d5d3eaf8d93078e1e5259f397cc9612843653c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 29 Aug 2011 17:26:43 +0200 Subject: [PATCH 2/3] [imp] added active_id in related coming from m2o bzr revid: nicolas.vanhoren@openerp.com-20110829152643-2yy0p52fqxd6chre --- addons/base/static/src/js/form.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 7970173780e..e2a99e9b8c5 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1565,14 +1565,16 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ var self = this; if (!self.value) return; - self.rpc("/base/action/load", { - action_id: related[2].id, - context: { + var additional_context = { active_id: self.value[0], active_ids: [self.value[0]], active_model: self.field.relation - } + }; + self.rpc("/base/action/load", { + action_id: related[2].id, + context: additional_context }, function(result) { + result.result.context = _.extend(result.result.context || {}, additional_context); self.do_action(result.result); }); } From b479464a36840cd7f83220e182b36cac7f30372e Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 29 Aug 2011 17:52:56 +0200 Subject: [PATCH 3/3] [imp] made web server able to get a report, but still can't get it from the browser bzr revid: nicolas.vanhoren@openerp.com-20110829155256-myi3mr8wlp006u0i --- addons/base/controllers/main.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index a198fbde0d1..c9bd7ddfeab 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -9,6 +9,7 @@ import re import simplejson import textwrap import xmlrpclib +import time from xml.etree import ElementTree from cStringIO import StringIO @@ -20,6 +21,8 @@ import openerpweb.nonliterals from babel.messages.pofile import read_po +_REPORT_POLLER_DELAY = 0.05 + # Should move to openerpweb.Xml2Json class Xml2Json: # xml2json-direct @@ -1284,6 +1287,16 @@ class Export(View): report_srv = req.session.proxy("report") context = req.session.eval_context(openerpweb.nonliterals.CompoundContext(req.context, \ action["context"])) - return False - #report_srv.report(req.session._db, req.session._uid, req.session._password) + + args = [req.session._db, req.session._uid, req.session._password, action["report_name"], context["active_ids"], {"id": context["active_id"], "model": context["active_model"], "report_type": action["report_type"]}, context] + report_id = report_srv.report(*args) + report = None + while True: + args2 = [req.session._db, req.session._uid, req.session._password, report_id] + report = report_srv.report_get(*args2) + if report["state"]: + break + time.sleep(_REPORT_POLLER_DELAY) + #TODO: ok now we've got the report, and so what? + return False