From 9e64b91a081e4a6686e80476cbd3a43830550e2f Mon Sep 17 00:00:00 2001 From: Laetitia Gangloff Date: Fri, 18 Jul 2014 18:52:38 +0200 Subject: [PATCH] Add the possibility to set the result of report instance in a dashboard --- mis_builder/__init__.py | 1 + mis_builder/__openerp__.py | 1 + mis_builder/models/mis_builder.py | 2 +- mis_builder/static/src/js/mis_builder.js | 38 +++++----- mis_builder/static/src/xml/mis_widget.xml | 2 +- mis_builder/views/mis_builder.xml | 3 +- mis_builder/wizard/__init__.py | 24 ++++++ mis_builder/wizard/__init__.pyc | Bin 0 -> 233 bytes mis_builder/wizard/mis_builder_dashboard.py | 76 +++++++++++++++++++ mis_builder/wizard/mis_builder_dashboard.xml | 33 ++++++++ 10 files changed, 158 insertions(+), 22 deletions(-) create mode 100644 mis_builder/wizard/__init__.py create mode 100644 mis_builder/wizard/__init__.pyc create mode 100644 mis_builder/wizard/mis_builder_dashboard.py create mode 100644 mis_builder/wizard/mis_builder_dashboard.xml diff --git a/mis_builder/__init__.py b/mis_builder/__init__.py index db1c497e..9a73ea2a 100644 --- a/mis_builder/__init__.py +++ b/mis_builder/__init__.py @@ -22,3 +22,4 @@ #============================================================================== import models +from . import wizard diff --git a/mis_builder/__openerp__.py b/mis_builder/__openerp__.py index 097d261c..c119bf12 100644 --- a/mis_builder/__openerp__.py +++ b/mis_builder/__openerp__.py @@ -31,6 +31,7 @@ 'website': 'http://acsone.eu', 'depends': ['account'], 'data': [ + 'wizard/mis_builder_dashboard.xml', 'views/mis_builder.xml', ], 'test': [ diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py index 8d5a0f6e..ee7eed07 100644 --- a/mis_builder/models/mis_builder.py +++ b/mis_builder/models/mis_builder.py @@ -460,7 +460,7 @@ class mis_report_instance(orm.Model): cols = [] for period in r.period_ids: - col = dict(name=period.name) + cols.append(dict(name=period.name, description=period.name)) res['cols'] = cols return res diff --git a/mis_builder/static/src/js/mis_builder.js b/mis_builder/static/src/js/mis_builder.js index 570098b6..f6709bf9 100644 --- a/mis_builder/static/src/js/mis_builder.js +++ b/mis_builder/static/src/js/mis_builder.js @@ -1,26 +1,26 @@ openerp.mis_builder = function(instance) { - - instance.mis_builder.MisReport = instance.web.form.FormWidget.extend({ - template: "mis_builder.MisReport", - - init: function() { + + instance.mis_builder.MisReport = instance.web.form.FormWidget.extend({ + template: "mis_builder.MisReport", + + init: function() { this._super.apply(this, arguments); this.mis_report_data = null; - }, - - start: function() { + }, + + start: function() { this._super.apply(this, arguments); - var self = this; + var self = this; new instance.web.Model("mis.report.instance").call( - "compute", - [self.getParent().dataset.context.active_id], - {'context': new instance.web.CompoundContext()} - ).then(function(result){ - self.mis_report_data = result; - self.renderElement(); + "compute", + [self.getParent().dataset.context.active_id], + {'context': new instance.web.CompoundContext()} + ).then(function(result){ + self.mis_report_data = result; + self.renderElement(); }); - }, - }); - - instance.web.form.custom_widgets.add('mis_report', 'instance.mis_builder.MisReport'); + }, + }); + + instance.web.form.custom_widgets.add('mis_report', 'instance.mis_builder.MisReport'); } \ No newline at end of file diff --git a/mis_builder/static/src/xml/mis_widget.xml b/mis_builder/static/src/xml/mis_widget.xml index 796a7ad5..df19ef1b 100644 --- a/mis_builder/static/src/xml/mis_widget.xml +++ b/mis_builder/static/src/xml/mis_widget.xml @@ -4,7 +4,7 @@ - diff --git a/mis_builder/views/mis_builder.xml b/mis_builder/views/mis_builder.xml index 6299c6d2..64978a50 100644 --- a/mis_builder/views/mis_builder.xml +++ b/mis_builder/views/mis_builder.xml @@ -119,7 +119,8 @@
-
diff --git a/mis_builder/wizard/__init__.py b/mis_builder/wizard/__init__.py new file mode 100644 index 00000000..0e48b0b6 --- /dev/null +++ b/mis_builder/wizard/__init__.py @@ -0,0 +1,24 @@ +#============================================================================== +# = +# mis_builder module for OpenERP, Management Information System Builder +# Copyright (C) 2014 ACSONE SA/NV () +# = +# This file is a part of mis_builder +# = +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# = +# mis_builder is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License v3 or later for more details. +# = +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# = +#============================================================================== + +from . import mis_builder_dashboard diff --git a/mis_builder/wizard/__init__.pyc b/mis_builder/wizard/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ada309ee575c514e83003a5b5cc37c3132ebc17d GIT binary patch literal 233 zcmY+7Q3}E^3_#QEM+E;A1TRp8*$aqx0zaHz{*<~DSLxQ$c8cE6^LPPM*oTJXB_WVk zerD74>RmT5MnQc~73Tz`WMBb024@Bg3#fTX2g3+FBP|G>iSjZSi#kYDvAsAI@WAu0 zL) +# = +# This file is a part of mis_builder +# = +# mis_builder is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License v3 or later +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# = +# mis_builder is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License v3 or later for more details. +# = +# You should have received a copy of the GNU Affero General Public License +# v3 or later along with this program. +# If not, see . +# = +#============================================================================== + +from openerp.osv import orm, fields +from lxml import etree + + +class add_mis_report_instance_dashboard(orm.TransientModel): + _name = "add.mis.report.instance.dashboard.wizard" + + _columns = {'name': fields.char('Name', size=32, required=True), + 'dashboard_id': fields.many2one('ir.actions.act_window', string="Dashboard", required=True, + domain="[('res_model', '=', 'board.board')]"), + } + + def default_get(self, cr, uid, fields, context=None): + if context is None: + context = {} + if context.get('active_id'): + res = super(add_mis_report_instance_dashboard, self).default_get(cr, uid, fields, context=context) + # get report instance name + res['name'] = self.pool['mis.report.instance'].read(cr, uid, context['active_id'], ['name'])['name'] + return res + + def action_add_to_dashboard(self, cr, uid, ids, context=None): + if context is None: + context = {} + assert 'active_id' in context, "active_id missing in context" + wizard_data = self.browse(cr, uid, ids, context=context)[0] + # create the act_window corresponding to this report + view_id = self.pool['ir.model.data'].get_object_reference(cr, uid, 'mis_builder', 'mis_report_instance_result_view_form')[1] + report_result = self.pool['ir.actions.act_window'].create(cr, uid, {'name': 'mis.report.instance.result.view.action.%d' % context['active_id'], + 'res_model': 'mis.report.instance', + 'res_id': context['active_id'], + 'target': 'current', + 'view_mode': 'form', + 'view_id': view_id}) + # add this result in the selected dashboard + last_customization = self.pool['ir.ui.view.custom'].search(cr, uid, [('user_id', '=', uid), + ('ref_id', '=', wizard_data.dashboard_id.view_id.id)], limit=1) + arch = wizard_data.dashboard_id.view_id.arch + if last_customization: + arch = self.pool['ir.ui.view.custom'].read(cr, uid, last_customization[0], ['arch'])['arch'] + new_arch = etree.fromstring(arch) + column = new_arch.xpath("//column")[0] + column.append(etree.Element('action', {'context': str(context), + 'name': str(report_result), + 'string': wizard_data.name, + 'view_mode': 'form'})) + self.pool['ir.ui.view.custom'].create(cr, uid, {'user_id': uid, + 'ref_id': wizard_data.dashboard_id.view_id.id, + 'arch': etree.tostring(new_arch, pretty_print=True)}) + + return {'type': 'ir.actions.act_window_close', } + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/mis_builder/wizard/mis_builder_dashboard.xml b/mis_builder/wizard/mis_builder_dashboard.xml new file mode 100644 index 00000000..99802637 --- /dev/null +++ b/mis_builder/wizard/mis_builder_dashboard.xml @@ -0,0 +1,33 @@ + + + + + + add.mis.report.instance.dashboard.wizard.view + add.mis.report.instance.dashboard.wizard + +
+ + + + +
+
+ +
+
+ + + Add to dashboard + add.mis.report.instance.dashboard.wizard + form + form + + new + + +
+
\ No newline at end of file
+