From dd5e769e89c15ebe5b485f09bb10f1df53c3f0dd Mon Sep 17 00:00:00 2001 From: oihane Date: Fri, 17 Apr 2015 10:01:18 +0200 Subject: [PATCH 01/15] [MOD] Module renamed to Added Known Issues to Readme file --- base_report_auto_create_qweb/README.rst | 20 +++++++++ base_report_auto_create_qweb/__init__.py | 6 +++ base_report_auto_create_qweb/__openerp__.py | 39 +++++++++++++++++ .../models/__init__.py | 6 +++ .../models/report_xml.py | 43 +++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 base_report_auto_create_qweb/README.rst create mode 100644 base_report_auto_create_qweb/__init__.py create mode 100644 base_report_auto_create_qweb/__openerp__.py create mode 100644 base_report_auto_create_qweb/models/__init__.py create mode 100644 base_report_auto_create_qweb/models/report_xml.py diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst new file mode 100644 index 000000000..7ad0bb818 --- /dev/null +++ b/base_report_auto_create_qweb/README.rst @@ -0,0 +1,20 @@ +Report Management +================= + +When creating a report in Settings > Technical > Actions > Reports or +Settings > Technical > Reports > Reports it will create an empty Qweb template +and the required linking info so that the user does not need to know how to do +all the links. + +Known issues / Roadmap +====================== +* When copying, duplicate all the required objects + +Credits +======= + +Contributors +------------ +* Oihane Crucelaegui +* Pedro M. Baeza +* Ana Juaristi diff --git a/base_report_auto_create_qweb/__init__.py b/base_report_auto_create_qweb/__init__.py new file mode 100644 index 000000000..054c8853d --- /dev/null +++ b/base_report_auto_create_qweb/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import models diff --git a/base_report_auto_create_qweb/__openerp__.py b/base_report_auto_create_qweb/__openerp__.py new file mode 100644 index 000000000..a9fb6f8b5 --- /dev/null +++ b/base_report_auto_create_qweb/__openerp__.py @@ -0,0 +1,39 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +############################################################################## + +{ + "name": "Report Management", + "version": "1.0", + "depends": [ + "base", + "report", + ], + "author": "OdooMRP team, " + "AvanzOSC, " + "Serv. Tecnol. Avanzados - Pedro M. Baeza", + "website": "http://www.odoomrp.com", + "contributors": [ + "Oihane Crucelaegui ", + "Pedro M. Baeza ", + "Ana Juaristi ", + ], + "category": "Tools", + "summary": "", + "data": [], + "installable": True, +} diff --git a/base_report_auto_create_qweb/models/__init__.py b/base_report_auto_create_qweb/models/__init__.py new file mode 100644 index 000000000..40a047607 --- /dev/null +++ b/base_report_auto_create_qweb/models/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import report_xml diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py new file mode 100644 index 000000000..602e95212 --- /dev/null +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -0,0 +1,43 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from openerp import models, api, exceptions, _ + + +class IrActionsReport(models.Model): + _inherit = 'ir.actions.report.xml' + + @api.model + def create(self, values): + if (values.get('report_type') in ['qweb-pdf', 'qweb-html'] and + values.get('report_name') and + values['report_name'].find('.') == -1): + raise exceptions.Warning( + _("Template Name must contain at least a dot in it's name")) + report_xml = super(IrActionsReport, self).create(values) + if values.get('report_type') in ['qweb-pdf', 'qweb-html']: + qweb_view_data = { + 'name': values['report_name'].split('.')[1], + 'mode': 'primary', + 'type': 'qweb', + 'arch': '\n' + '\n' % values['report_name'], + } + qweb_view = self.env['ir.ui.view'].create(qweb_view_data) + model_data_data = { + 'module': values['report_name'].split('.')[0], + 'name': values['report_name'].split('.')[1], + 'res_id': qweb_view.id, + 'model': 'ir.ui.view', + } + self.env['ir.model.data'].create(model_data_data) + value_view_data = { + 'name': values['name'], + 'model': values['model'], + 'key2': 'client_print_multi', + 'value_unpickle': 'ir.actions.report.xml,%s' % report_xml.id, + } + self.env['ir.values'].create(value_view_data) + return report_xml From ee7eb90b04649eeb3033338ced9f245c54b49766 Mon Sep 17 00:00:00 2001 From: oihane Date: Tue, 2 Jun 2015 15:12:15 +0200 Subject: [PATCH 02/15] [IMP] Duplication of report added --- base_report_auto_create_qweb/README.rst | 10 +- base_report_auto_create_qweb/__init__.py | 1 + base_report_auto_create_qweb/__openerp__.py | 5 +- .../models/report_xml.py | 94 ++++++++++++++----- .../views/report_xml_view.xml | 19 ++++ .../wizard/__init__.py | 6 ++ .../wizard/report_duplicate.py | 22 +++++ .../wizard/report_duplicate_view.xml | 33 +++++++ 8 files changed, 164 insertions(+), 26 deletions(-) create mode 100644 base_report_auto_create_qweb/views/report_xml_view.xml create mode 100644 base_report_auto_create_qweb/wizard/__init__.py create mode 100644 base_report_auto_create_qweb/wizard/report_duplicate.py create mode 100644 base_report_auto_create_qweb/wizard/report_duplicate_view.xml diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst index 7ad0bb818..80615e887 100644 --- a/base_report_auto_create_qweb/README.rst +++ b/base_report_auto_create_qweb/README.rst @@ -6,9 +6,13 @@ Settings > Technical > Reports > Reports it will create an empty Qweb template and the required linking info so that the user does not need to know how to do all the links. -Known issues / Roadmap -====================== -* When copying, duplicate all the required objects +New duplication button added, it enables the possibility of duplicating a report +and assigning the duplicated one a suffix. If the copy option provided by the +system is used this will add 'copy' as suffix. + +Be careful with this option as it can create many unnecessary Qweb views because +it duplicates all the related files to the report you are copying. + Credits ======= diff --git a/base_report_auto_create_qweb/__init__.py b/base_report_auto_create_qweb/__init__.py index 054c8853d..3fc79a2d7 100644 --- a/base_report_auto_create_qweb/__init__.py +++ b/base_report_auto_create_qweb/__init__.py @@ -4,3 +4,4 @@ ############################################################################## from . import models +from . import wizard diff --git a/base_report_auto_create_qweb/__openerp__.py b/base_report_auto_create_qweb/__openerp__.py index a9fb6f8b5..22716005f 100644 --- a/base_report_auto_create_qweb/__openerp__.py +++ b/base_report_auto_create_qweb/__openerp__.py @@ -34,6 +34,9 @@ ], "category": "Tools", "summary": "", - "data": [], + "data": [ + "wizard/report_duplicate_view.xml", + "views/report_xml_view.xml", + ], "installable": True, } diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 602e95212..28a5efef4 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -18,26 +18,76 @@ class IrActionsReport(models.Model): _("Template Name must contain at least a dot in it's name")) report_xml = super(IrActionsReport, self).create(values) if values.get('report_type') in ['qweb-pdf', 'qweb-html']: - qweb_view_data = { - 'name': values['report_name'].split('.')[1], - 'mode': 'primary', - 'type': 'qweb', - 'arch': '\n' - '\n' % values['report_name'], - } - qweb_view = self.env['ir.ui.view'].create(qweb_view_data) - model_data_data = { - 'module': values['report_name'].split('.')[0], - 'name': values['report_name'].split('.')[1], - 'res_id': qweb_view.id, - 'model': 'ir.ui.view', - } - self.env['ir.model.data'].create(model_data_data) - value_view_data = { - 'name': values['name'], - 'model': values['model'], - 'key2': 'client_print_multi', - 'value_unpickle': 'ir.actions.report.xml,%s' % report_xml.id, - } - self.env['ir.values'].create(value_view_data) + report_views = self.env.context.get('report_views') + suffix = self.env.context.get('suffix', 'copy') + report_name = values['report_name'] + module = report_name.split('.')[0] + name = report_name.split('.')[1] + for report_view in report_views: + origin_name = name.replace(('_%s' % suffix), '') + new_report_name = '%s_%s' % (origin_name, suffix) + qweb_view_data = { + 'name': report_view.name.replace( + origin_name, new_report_name), + 'mode': 'primary', + 'type': 'qweb', + 'arch': report_view.arch.replace( + origin_name, new_report_name), + } + qweb_view = self.env['ir.ui.view'].create(qweb_view_data) + model_data_data = { + 'module': module, + 'name': report_view.name.replace( + origin_name, new_report_name), + 'res_id': qweb_view.id, + 'model': 'ir.ui.view', + } + self.env['ir.model.data'].create(model_data_data) + value_view_data = { + 'name': values['name'], + 'model': values['model'], + 'key2': 'client_print_multi', + 'value_unpickle': ('ir.actions.report.xml,%s' % + report_xml.id), + } + self.env['ir.values'].create(value_view_data) + if not report_views: + qweb_view_data = { + 'name': name, + 'mode': 'primary', + 'type': 'qweb', + 'arch': '\n' + '\n' % report_name, + } + qweb_view = self.env['ir.ui.view'].create(qweb_view_data) + model_data_data = { + 'module': module, + 'name': name, + 'res_id': qweb_view.id, + 'model': 'ir.ui.view', + } + self.env['ir.model.data'].create(model_data_data) + value_view_data = { + 'name': values['name'], + 'model': values['model'], + 'key2': 'client_print_multi', + 'value_unpickle': ( + 'ir.actions.report.xml,%s' % report_xml.id), + } + self.env['ir.values'].create(value_view_data) return report_xml + + @api.one + def copy(self, default=None): + if default is None: + default = {} + suffix = self.env.context.get('suffix', 'copy') + default['name'] = '%s (%s)' % (self.name, suffix) + default['report_name'] = '%s_%s' % (self.report_name, suffix.lower()) + report_views = self.env['ir.ui.view'].search([ + ('name', 'ilike', self.report_name.split('.')[1]), + ('type', '=', 'qweb')]) + return super(IrActionsReport, + self.with_context( + report_views=report_views, + suffix=suffix.lower())).copy(default=default) diff --git a/base_report_auto_create_qweb/views/report_xml_view.xml b/base_report_auto_create_qweb/views/report_xml_view.xml new file mode 100644 index 000000000..e558770af --- /dev/null +++ b/base_report_auto_create_qweb/views/report_xml_view.xml @@ -0,0 +1,19 @@ + + + + + ir.actions.report.xml.form + ir.actions.report.xml + + + + +
+
+
+
+
+
+
diff --git a/base_report_auto_create_qweb/wizard/__init__.py b/base_report_auto_create_qweb/wizard/__init__.py new file mode 100644 index 000000000..1d0ac90ff --- /dev/null +++ b/base_report_auto_create_qweb/wizard/__init__.py @@ -0,0 +1,6 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from . import report_duplicate diff --git a/base_report_auto_create_qweb/wizard/report_duplicate.py b/base_report_auto_create_qweb/wizard/report_duplicate.py new file mode 100644 index 000000000..75687d8ac --- /dev/null +++ b/base_report_auto_create_qweb/wizard/report_duplicate.py @@ -0,0 +1,22 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# For copyright and license notices, see __openerp__.py file in root directory +############################################################################## + +from openerp import api, fields, models + + +class IrActionsReportDuplicate(models.TransientModel): + _name = 'ir.actions.report.xml.duplicate' + + suffix = fields.Char( + string='Suffix', help='This suffix will be added to the report') + + @api.one + def duplicate_report(self): + active_id = self.env.context.get('active_id') + model = self.env.context.get('active_model') + if model: + object = self.env[model].browse(active_id) + object.with_context(suffix=self.suffix).copy() + return {} diff --git a/base_report_auto_create_qweb/wizard/report_duplicate_view.xml b/base_report_auto_create_qweb/wizard/report_duplicate_view.xml new file mode 100644 index 000000000..38ce052f7 --- /dev/null +++ b/base_report_auto_create_qweb/wizard/report_duplicate_view.xml @@ -0,0 +1,33 @@ + + + + + ir.actions.report.xml.duplicate.form + ir.actions.report.xml.duplicate + +
+ + + +
+
+
+
+
+ + + Report duplication + ir.actions.report.xml.duplicate + form + form + + new + + +
+
From 255b2e442316b183f7d3b706c529a6e6889c7825 Mon Sep 17 00:00:00 2001 From: oihane Date: Tue, 2 Jun 2015 15:36:03 +0200 Subject: [PATCH 03/15] [FIX] Fix travis --- base_report_auto_create_qweb/models/report_xml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 28a5efef4..4fb0997e6 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -18,7 +18,7 @@ class IrActionsReport(models.Model): _("Template Name must contain at least a dot in it's name")) report_xml = super(IrActionsReport, self).create(values) if values.get('report_type') in ['qweb-pdf', 'qweb-html']: - report_views = self.env.context.get('report_views') + report_views = self.env.context.get('report_views', False) suffix = self.env.context.get('suffix', 'copy') report_name = values['report_name'] module = report_name.split('.')[0] From 6000d038203f4b8639a223efdf5bb00f8a96f4f5 Mon Sep 17 00:00:00 2001 From: oihane Date: Tue, 2 Jun 2015 16:01:12 +0200 Subject: [PATCH 04/15] [FIX] Fixing travis error --- base_report_auto_create_qweb/models/report_xml.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 4fb0997e6..f628c1efc 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -18,12 +18,12 @@ class IrActionsReport(models.Model): _("Template Name must contain at least a dot in it's name")) report_xml = super(IrActionsReport, self).create(values) if values.get('report_type') in ['qweb-pdf', 'qweb-html']: - report_views = self.env.context.get('report_views', False) + report_view_ids = self.env.context.get('report_views', False) suffix = self.env.context.get('suffix', 'copy') report_name = values['report_name'] module = report_name.split('.')[0] name = report_name.split('.')[1] - for report_view in report_views: + for report_view in self.env['ir.ui.view'].browse(report_view_ids): origin_name = name.replace(('_%s' % suffix), '') new_report_name = '%s_%s' % (origin_name, suffix) qweb_view_data = { @@ -51,7 +51,7 @@ class IrActionsReport(models.Model): report_xml.id), } self.env['ir.values'].create(value_view_data) - if not report_views: + if not report_view_ids: qweb_view_data = { 'name': name, 'mode': 'primary', @@ -89,5 +89,5 @@ class IrActionsReport(models.Model): ('type', '=', 'qweb')]) return super(IrActionsReport, self.with_context( - report_views=report_views, + report_views=report_views.ids, suffix=suffix.lower())).copy(default=default) From 1022979822a3362c90f92e3b7c607dd31ed271ee Mon Sep 17 00:00:00 2001 From: oihane Date: Wed, 3 Jun 2015 12:56:33 +0200 Subject: [PATCH 05/15] [IMP] Qweb creation hooks --- base_report_auto_create_qweb/README.rst | 2 +- .../models/report_xml.py | 100 +++++++++--------- 2 files changed, 49 insertions(+), 53 deletions(-) diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst index 80615e887..1aa7ac1fe 100644 --- a/base_report_auto_create_qweb/README.rst +++ b/base_report_auto_create_qweb/README.rst @@ -7,7 +7,7 @@ and the required linking info so that the user does not need to know how to do all the links. New duplication button added, it enables the possibility of duplicating a report -and assigning the duplicated one a suffix. If the copy option provided by the +and assigning to the duplicated one a suffix. If the copy option provided by the system is used this will add 'copy' as suffix. Be careful with this option as it can create many unnecessary Qweb views because diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index f628c1efc..7eb6c9e3c 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -9,6 +9,40 @@ from openerp import models, api, exceptions, _ class IrActionsReport(models.Model): _inherit = 'ir.actions.report.xml' + def _prepare_qweb_view_data(self, qweb_name, arch): + return { + 'name': qweb_name, + 'mode': 'primary', + 'type': 'qweb', + 'arch': arch, + } + + def _prepare_model_data_data(self, qweb_name, module, qweb_view): + return { + 'module': module, + 'name': qweb_name, + 'res_id': qweb_view.id, + 'model': 'ir.ui.view', + } + + def _prepare_value_view_data(self, name, model): + return { + 'name': name, + 'model': model, + 'key2': 'client_print_multi', + 'value_unpickle': 'ir.actions.report.xml,%s' % self.id, + } + + def _create_qweb(self, name, qweb_name, module, model, arch): + qweb_view_data = self._prepare_qweb_view_data(qweb_name, arch) + qweb_view = self.env['ir.ui.view'].create(qweb_view_data) + model_data_data = self._prepare_model_data_data( + qweb_name, module, qweb_view) + self.env['ir.model.data'].create(model_data_data) + value_view_data = self._prepare_value_view_data( + name, model) + self.env['ir.values'].create(value_view_data) + @api.model def create(self, values): if (values.get('report_type') in ['qweb-pdf', 'qweb-html'] and @@ -20,61 +54,23 @@ class IrActionsReport(models.Model): if values.get('report_type') in ['qweb-pdf', 'qweb-html']: report_view_ids = self.env.context.get('report_views', False) suffix = self.env.context.get('suffix', 'copy') - report_name = values['report_name'] - module = report_name.split('.')[0] - name = report_name.split('.')[1] + name = values['name'] + model = values['model'] + report = values['report_name'] + module = report.split('.')[0] + report_name = report.split('.')[1] for report_view in self.env['ir.ui.view'].browse(report_view_ids): - origin_name = name.replace(('_%s' % suffix), '') + origin_name = report_name.replace(('_%s' % suffix), '') new_report_name = '%s_%s' % (origin_name, suffix) - qweb_view_data = { - 'name': report_view.name.replace( - origin_name, new_report_name), - 'mode': 'primary', - 'type': 'qweb', - 'arch': report_view.arch.replace( - origin_name, new_report_name), - } - qweb_view = self.env['ir.ui.view'].create(qweb_view_data) - model_data_data = { - 'module': module, - 'name': report_view.name.replace( - origin_name, new_report_name), - 'res_id': qweb_view.id, - 'model': 'ir.ui.view', - } - self.env['ir.model.data'].create(model_data_data) - value_view_data = { - 'name': values['name'], - 'model': values['model'], - 'key2': 'client_print_multi', - 'value_unpickle': ('ir.actions.report.xml,%s' % - report_xml.id), - } - self.env['ir.values'].create(value_view_data) + qweb_name = report_view.name.replace( + origin_name, new_report_name) + arch = report_view.arch.replace(origin_name, new_report_name) + report_xml._create_qweb( + name, qweb_name, module, model, arch) if not report_view_ids: - qweb_view_data = { - 'name': name, - 'mode': 'primary', - 'type': 'qweb', - 'arch': '\n' - '\n' % report_name, - } - qweb_view = self.env['ir.ui.view'].create(qweb_view_data) - model_data_data = { - 'module': module, - 'name': name, - 'res_id': qweb_view.id, - 'model': 'ir.ui.view', - } - self.env['ir.model.data'].create(model_data_data) - value_view_data = { - 'name': values['name'], - 'model': values['model'], - 'key2': 'client_print_multi', - 'value_unpickle': ( - 'ir.actions.report.xml,%s' % report_xml.id), - } - self.env['ir.values'].create(value_view_data) + arch = ('\n' + '\n' % report_name) + report_xml._create_qweb(name, report_name, module, model, arch) return report_xml @api.one From 565bec3336c7122a762164af3b6617a1da81587e Mon Sep 17 00:00:00 2001 From: oihane Date: Wed, 3 Jun 2015 13:12:04 +0200 Subject: [PATCH 06/15] [IMP] Added translations to module --- .../i18n/base_report_auto_create_qweb.pot | 85 +++++++++++++++++++ base_report_auto_create_qweb/i18n/es.po | 85 +++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 base_report_auto_create_qweb/i18n/base_report_auto_create_qweb.pot create mode 100644 base_report_auto_create_qweb/i18n/es.po diff --git a/base_report_auto_create_qweb/i18n/base_report_auto_create_qweb.pot b/base_report_auto_create_qweb/i18n/base_report_auto_create_qweb.pot new file mode 100644 index 000000000..c3069f396 --- /dev/null +++ b/base_report_auto_create_qweb/i18n/base_report_auto_create_qweb.pot @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_report_auto_create_qweb +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-03 10:58+0000\n" +"PO-Revision-Date: 2015-06-03 10:58+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Cancel" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,create_date:0 +msgid "Created on" +msgstr "" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Duplicate" +msgstr "" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml:base_report_auto_create_qweb.ir_actions_report_xml_form_view +msgid "Duplicate Report" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,id:0 +msgid "ID" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: base_report_auto_create_qweb +#: model:ir.actions.act_window,name:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_action +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Report duplication" +msgstr "" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,suffix:0 +msgid "Suffix" +msgstr "" + +#. module: base_report_auto_create_qweb +#: code:addons/base_report_auto_create_qweb/models/report_xml.py:18 +#: code:addons/base_report_auto_create_qweb/models/report_xml.py:52 +#, python-format +msgid "Template Name must contain at least a dot in it's name" +msgstr "" + +#. module: base_report_auto_create_qweb +#: help:ir.actions.report.xml.duplicate,suffix:0 +msgid "This suffix will be added to the report" +msgstr "" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "or" +msgstr "" + diff --git a/base_report_auto_create_qweb/i18n/es.po b/base_report_auto_create_qweb/i18n/es.po new file mode 100644 index 000000000..a9e8240aa --- /dev/null +++ b/base_report_auto_create_qweb/i18n/es.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_report_auto_create_qweb +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-06-03 11:06+0000\n" +"PO-Revision-Date: 2015-06-03 11:06+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,create_uid:0 +msgid "Created by" +msgstr "Creado por" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,create_date:0 +msgid "Created on" +msgstr "Creado en" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Duplicate" +msgstr "Duplicar" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml:base_report_auto_create_qweb.ir_actions_report_xml_form_view +msgid "Duplicate Report" +msgstr "Duplicar informe" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,id:0 +msgid "ID" +msgstr "ID" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,write_uid:0 +msgid "Last Updated by" +msgstr "Última actualización de" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,write_date:0 +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: base_report_auto_create_qweb +#: model:ir.actions.act_window,name:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_action +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "Report duplication" +msgstr "Duplicación del informe" + +#. module: base_report_auto_create_qweb +#: field:ir.actions.report.xml.duplicate,suffix:0 +msgid "Suffix" +msgstr "Súfijo" + +#. module: base_report_auto_create_qweb +#: code:addons/base_report_auto_create_qweb/models/report_xml.py:18 +#: code:addons/base_report_auto_create_qweb/models/report_xml.py:52 +#, python-format +msgid "Template Name must contain at least a dot in it's name" +msgstr "El nombre de plantilla debe contener al menos un punto en su nombre" + +#. module: base_report_auto_create_qweb +#: help:ir.actions.report.xml.duplicate,suffix:0 +msgid "This suffix will be added to the report" +msgstr "Este súfijo será añadido al informe" + +#. module: base_report_auto_create_qweb +#: view:ir.actions.report.xml.duplicate:base_report_auto_create_qweb.ir_actions_report_xml_duplicate_form_view +msgid "or" +msgstr "o" + From 36cd664aa8a2b756df4b513717d4b50ee2d56231 Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Mon, 29 Jun 2015 15:04:59 +0200 Subject: [PATCH 07/15] Add Bug Tracker and me as contributor --- base_report_auto_create_qweb/README.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst index 1aa7ac1fe..6eb743ff2 100644 --- a/base_report_auto_create_qweb/README.rst +++ b/base_report_auto_create_qweb/README.rst @@ -13,6 +13,13 @@ system is used this will add 'copy' as suffix. Be careful with this option as it can create many unnecessary Qweb views because it duplicates all the related files to the report you are copying. +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. Credits ======= @@ -22,3 +29,4 @@ Contributors * Oihane Crucelaegui * Pedro M. Baeza * Ana Juaristi +* Alex Comba From 56fe162f30213bd52eed22815792ce3b12f61681 Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Mon, 29 Jun 2015 15:11:27 +0200 Subject: [PATCH 08/15] README: add license key, add OCA as author, remove key summary as empty and remove base from depends as useless since v8.0 --- base_report_auto_create_qweb/__openerp__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/base_report_auto_create_qweb/__openerp__.py b/base_report_auto_create_qweb/__openerp__.py index 22716005f..d6867fb68 100644 --- a/base_report_auto_create_qweb/__openerp__.py +++ b/base_report_auto_create_qweb/__openerp__.py @@ -20,20 +20,20 @@ "name": "Report Management", "version": "1.0", "depends": [ - "base", "report", ], "author": "OdooMRP team, " "AvanzOSC, " - "Serv. Tecnol. Avanzados - Pedro M. Baeza", + "Serv. Tecnol. Avanzados - Pedro M. Baeza, " + "Odoo Community Association (OCA), ", "website": "http://www.odoomrp.com", + 'license': 'AGPL-3', "contributors": [ "Oihane Crucelaegui ", "Pedro M. Baeza ", "Ana Juaristi ", ], "category": "Tools", - "summary": "", "data": [ "wizard/report_duplicate_view.xml", "views/report_xml_view.xml", From 915257cd0c21147e61dd6d11fd7207a046d532ec Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Mon, 29 Jun 2015 15:13:36 +0200 Subject: [PATCH 09/15] Add OCA icon --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 base_report_auto_create_qweb/static/description/icon.png diff --git a/base_report_auto_create_qweb/static/description/icon.png b/base_report_auto_create_qweb/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 718e77a3e4726e48a982984d2e77b2f7e7705953 Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Mon, 29 Jun 2015 16:33:49 +0200 Subject: [PATCH 10/15] README: add badge and Maintainer section --- base_report_auto_create_qweb/README.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst index 6eb743ff2..3d835ed79 100644 --- a/base_report_auto_create_qweb/README.rst +++ b/base_report_auto_create_qweb/README.rst @@ -1,3 +1,6 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + Report Management ================= @@ -30,3 +33,18 @@ Contributors * Pedro M. Baeza * Ana Juaristi * Alex Comba + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. From a3123cbfbc4165af2e6905bc68699dbc2121a486 Mon Sep 17 00:00:00 2001 From: oihane Date: Mon, 29 Jun 2015 18:41:08 +0200 Subject: [PATCH 11/15] [FIX] Fixed error in qweb view creation --- base_report_auto_create_qweb/models/report_xml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 7eb6c9e3c..866752b93 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -69,7 +69,7 @@ class IrActionsReport(models.Model): name, qweb_name, module, model, arch) if not report_view_ids: arch = ('\n' - '\n' % report_name) + '\n' % report) report_xml._create_qweb(name, report_name, module, model, arch) return report_xml From 3dbefbb3adadf3b402f6814738c81ae1bea20465 Mon Sep 17 00:00:00 2001 From: Alex Comba Date: Tue, 30 Jun 2015 09:08:54 +0200 Subject: [PATCH 12/15] Rename module to 'Report qweb auto generation' --- base_report_auto_create_qweb/README.rst | 4 ++-- base_report_auto_create_qweb/__openerp__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/base_report_auto_create_qweb/README.rst b/base_report_auto_create_qweb/README.rst index 3d835ed79..a8864216e 100644 --- a/base_report_auto_create_qweb/README.rst +++ b/base_report_auto_create_qweb/README.rst @@ -1,8 +1,8 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 -Report Management -================= +Report qweb auto generation +=========================== When creating a report in Settings > Technical > Actions > Reports or Settings > Technical > Reports > Reports it will create an empty Qweb template diff --git a/base_report_auto_create_qweb/__openerp__.py b/base_report_auto_create_qweb/__openerp__.py index d6867fb68..92f73e2ae 100644 --- a/base_report_auto_create_qweb/__openerp__.py +++ b/base_report_auto_create_qweb/__openerp__.py @@ -17,7 +17,7 @@ ############################################################################## { - "name": "Report Management", + "name": "Report qweb auto generation", "version": "1.0", "depends": [ "report", From ed56acf70ce4c210061acdb793fb080bc30bce79 Mon Sep 17 00:00:00 2001 From: oihane Date: Tue, 21 Jul 2015 11:48:00 +0200 Subject: [PATCH 13/15] [IMP] module name changed with suffix to avoid view deletion when update=all --- base_report_auto_create_qweb/models/report_xml.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 866752b93..34408d711 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -61,15 +61,18 @@ class IrActionsReport(models.Model): report_name = report.split('.')[1] for report_view in self.env['ir.ui.view'].browse(report_view_ids): origin_name = report_name.replace(('_%s' % suffix), '') + origin_module = module.replace(('_%s' % suffix), '') new_report_name = '%s_%s' % (origin_name, suffix) qweb_name = report_view.name.replace( origin_name, new_report_name) - arch = report_view.arch.replace(origin_name, new_report_name) + arch = report_view.arch.replace( + origin_name, new_report_name).replace(origin_module + '.', + module + '.') report_xml._create_qweb( name, qweb_name, module, model, arch) if not report_view_ids: arch = ('\n' - '\n' % report) + '\n' % report_name) report_xml._create_qweb(name, report_name, module, model, arch) return report_xml @@ -79,7 +82,10 @@ class IrActionsReport(models.Model): default = {} suffix = self.env.context.get('suffix', 'copy') default['name'] = '%s (%s)' % (self.name, suffix) - default['report_name'] = '%s_%s' % (self.report_name, suffix.lower()) + module = '%s_%s' % ( + self.report_name.split('.')[0], suffix.lower()) + report = '%s_%s' % (self.report_name.split('.')[1], suffix.lower()) + default['report_name'] = '%s.%s' % (module, report) report_views = self.env['ir.ui.view'].search([ ('name', 'ilike', self.report_name.split('.')[1]), ('type', '=', 'qweb')]) From b193f4c38f30390f6429352b26d83a1a19f0a959 Mon Sep 17 00:00:00 2001 From: eLBati Date: Thu, 10 Sep 2015 10:06:04 +0200 Subject: [PATCH 14/15] FIX Access Denied with users != admin --- base_report_auto_create_qweb/models/report_xml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index 34408d711..c6b47160f 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -41,7 +41,7 @@ class IrActionsReport(models.Model): self.env['ir.model.data'].create(model_data_data) value_view_data = self._prepare_value_view_data( name, model) - self.env['ir.values'].create(value_view_data) + self.env['ir.values'].sudo().create(value_view_data) @api.model def create(self, values): From 924c8076da6537c8eecb4a046dd9decbfdf3bf15 Mon Sep 17 00:00:00 2001 From: eLBati Date: Thu, 10 Sep 2015 10:46:43 +0200 Subject: [PATCH 15/15] FIX duplicate key value violates unique constraint "ir_model_data_module_name_uniq" while installing modules which create qweb view before report Now, report duplication is only activated by dedicated wizard --- base_report_auto_create_qweb/models/report_xml.py | 4 ++++ base_report_auto_create_qweb/wizard/report_duplicate.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/base_report_auto_create_qweb/models/report_xml.py b/base_report_auto_create_qweb/models/report_xml.py index c6b47160f..6c719f34d 100644 --- a/base_report_auto_create_qweb/models/report_xml.py +++ b/base_report_auto_create_qweb/models/report_xml.py @@ -45,6 +45,8 @@ class IrActionsReport(models.Model): @api.model def create(self, values): + if not self.env.context.get('enable_duplication', False): + return super(IrActionsReport, self).create(values) if (values.get('report_type') in ['qweb-pdf', 'qweb-html'] and values.get('report_name') and values['report_name'].find('.') == -1): @@ -78,6 +80,8 @@ class IrActionsReport(models.Model): @api.one def copy(self, default=None): + if not self.env.context.get('enable_duplication', False): + return super(IrActionsReport, self).copy(default=default) if default is None: default = {} suffix = self.env.context.get('suffix', 'copy') diff --git a/base_report_auto_create_qweb/wizard/report_duplicate.py b/base_report_auto_create_qweb/wizard/report_duplicate.py index 75687d8ac..b461f1f99 100644 --- a/base_report_auto_create_qweb/wizard/report_duplicate.py +++ b/base_report_auto_create_qweb/wizard/report_duplicate.py @@ -18,5 +18,6 @@ class IrActionsReportDuplicate(models.TransientModel): model = self.env.context.get('active_model') if model: object = self.env[model].browse(active_id) - object.with_context(suffix=self.suffix).copy() + object.with_context( + suffix=self.suffix, enable_duplication=True).copy() return {}