From 6c542b03308b148f0ba7d84410ddbf8ec45ced06 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Tue, 11 Sep 2012 10:12:31 +0530 Subject: [PATCH 1/5] [IMP] Added the Print workflow option for the debug view bzr revid: jam@tinyerp.com-20120911044231-15aoi4ow7dtc1gfx --- addons/web/static/src/js/views.js | 2 ++ addons/web/static/src/xml/base.xml | 1 + 2 files changed, 3 insertions(+) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 90709276bdf..d54e0194f38 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -836,6 +836,8 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ } }); break; + case 'print_workflow': + break; default: if (val) { console.log("No debug handler for ", val); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d067b7586fb..9ec53a89863 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -487,6 +487,7 @@ + From 5a9c2544ef0577d6dffb09c08cd298cc25ca0e6f Mon Sep 17 00:00:00 2001 From: "ajay javiya (OpenERP)" Date: Wed, 12 Sep 2012 16:12:14 +0530 Subject: [PATCH 2/5] [IMP]: Print workflow report bzr revid: aja@tinyerp.com-20120912104214-z34o1hyk2qt67jhu --- addons/web/controllers/main.py | 28 ++++++++++++++++++++++++++-- addons/web/static/src/js/views.js | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index b635f5abdcd..6c44455e543 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1937,9 +1937,33 @@ class Reports(View): # maybe we should take of what characters can appear in a file name? ('Content-Disposition', 'attachment; filename="%s.%s"' % (file_name, report_struct['format'])), ('Content-Type', report_mimetype), - ('Content-Length', len(report))], - cookies={'fileToken': int(token)}) + ('Content-Length', len(report))],) + @openerpweb.httprequest + def print_workflow(self, req, action, token): + action = simplejson.loads(action) + report_srv = req.session.proxy("report") + action.update({'nested': True}) + report_id = report_srv.report( + req.session._db, req.session._uid, req.session._password, + 'workflow.instance.graph', action['id'], action) + report_struct = None + while True: + report_struct = report_srv.report_get( + req.session._db, req.session._uid, + req.session._password, report_id) + if report_struct["state"]: + break + time.sleep(self.POLLING_DELAY) + report = base64.b64decode(report_struct['result']) + file_name = 'workflow_%s_%d.%s'%(action['model'], action['id'], report_struct['format']) + return req.make_response(report, + headers=[ + ('Content-Disposition', 'attachment; filename="%s"'% (file_name)), + ('Content-Type', 'application/pdf'), + ('Content-Length', len(report))], + cookies={'fileToken': int(token)}) + class Import(View): _cp_path = "/web/import" diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index d54e0194f38..ea35c2732bd 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -837,6 +837,21 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ }); break; case 'print_workflow': + var self = this + if (current_view.get_selected_ids().length != 1) { + instance.web.dialog($("
").text(_t("You must choose only one record.")), { title: _t("Warning"), modal: true }); + evt.currentTarget.selectedIndex = 0; + return false; + } else { + instance.web.blockUI(); + var action={"id":current_view.get_selected_ids()[0], + "model":self.dataset.model} + self.session.get_file({ + url: '/web/report/print_workflow', + data: {action: JSON.stringify(action)}, + complete: instance.web.unblockUI + }); + } break; default: if (val) { From f9f78f75f09e2e5be4884e06cb395c80d1dc243d Mon Sep 17 00:00:00 2001 From: "ajay javiya (OpenERP)" Date: Wed, 12 Sep 2012 16:49:43 +0530 Subject: [PATCH 3/5] [Add]: Add Unwanted changes bzr revid: aja@tinyerp.com-20120912111943-3p8tsawxqr9xtn9a --- addons/web/controllers/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 6c44455e543..d96e6b2d401 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1937,7 +1937,8 @@ class Reports(View): # maybe we should take of what characters can appear in a file name? ('Content-Disposition', 'attachment; filename="%s.%s"' % (file_name, report_struct['format'])), ('Content-Type', report_mimetype), - ('Content-Length', len(report))],) + ('Content-Length', len(report))], + cookies={'fileToken': int(token)}) @openerpweb.httprequest def print_workflow(self, req, action, token): From ac2608d3dd9ced30bba7abf6e0192440fdf36aab Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 12 Sep 2012 18:33:09 +0530 Subject: [PATCH 4/5] [FIX] Passing right datas and ids to print the report bzr revid: jam@tinyerp.com-20120912130309-3jr2fe2yl7hgllwx --- addons/web/controllers/main.py | 5 +++-- addons/web/static/src/js/views.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index d96e6b2d401..ac8ebfa198c 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1944,10 +1944,11 @@ class Reports(View): def print_workflow(self, req, action, token): action = simplejson.loads(action) report_srv = req.session.proxy("report") - action.update({'nested': True}) + ids = action.pop('ids') + action.update({'nested': True, 'id': ids[0]}) report_id = report_srv.report( req.session._db, req.session._uid, req.session._password, - 'workflow.instance.graph', action['id'], action) + 'workflow.instance.graph', ids, action) report_struct = None while True: report_struct = report_srv.report_get( diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index ea35c2732bd..272ec0219b0 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -844,7 +844,7 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ return false; } else { instance.web.blockUI(); - var action={"id":current_view.get_selected_ids()[0], + var action={"ids":current_view.get_selected_ids(), "model":self.dataset.model} self.session.get_file({ url: '/web/report/print_workflow', From 14ed53e196441985e6242b4bcad4f0ed411646a8 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Wed, 12 Sep 2012 18:49:51 +0530 Subject: [PATCH 5/5] [FIX] Should not print workflow in non standard views bzr revid: jam@tinyerp.com-20120912131951-6virlw8v8a8mccov --- addons/web/static/src/js/views.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 272ec0219b0..d0a5b1841bb 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -837,8 +837,12 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({ }); break; case 'print_workflow': - var self = this - if (current_view.get_selected_ids().length != 1) { + var self = this; + if (self.active_view !== "form" && self.active_view !== "list"){ + instance.web.dialog($("
").text(_t("Workflow can be printed from 'Form' or 'List' view only.")), { title: _t("Warning"), modal: true }); + evt.currentTarget.selectedIndex = 0; + return false; + }else if (current_view.get_selected_ids().length != 1) { instance.web.dialog($("
").text(_t("You must choose only one record.")), { title: _t("Warning"), modal: true }); evt.currentTarget.selectedIndex = 0; return false;