From 5cb54d701a1ea8307a1664612f75a35a51145de3 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 31 Dec 2016 14:10:57 +0100 Subject: [PATCH 1/7] Add module report_txt --- report_txt/README.rst | 54 ++++++++++++++++++++++ report_txt/__init__.py | 3 ++ report_txt/__manifest__.py | 15 ++++++ report_txt/models/__init__.py | 4 ++ report_txt/models/ir_actions_report_xml.py | 19 ++++++++ report_txt/models/report.py | 20 ++++++++ 6 files changed, 115 insertions(+) create mode 100644 report_txt/README.rst create mode 100644 report_txt/__init__.py create mode 100644 report_txt/__manifest__.py create mode 100644 report_txt/models/__init__.py create mode 100644 report_txt/models/ir_actions_report_xml.py create mode 100644 report_txt/models/report.py diff --git a/report_txt/README.rst b/report_txt/README.rst new file mode 100644 index 00000000..adc77ca9 --- /dev/null +++ b/report_txt/README.rst @@ -0,0 +1,54 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +================= +Qweb Text Reports +================= + +This module extends the possibilities of the native Qweb reporting engine to be able to generate any kind of text files (TXT, CSV, ZPL, EPL, ...). + +Usage +===== + +To add a text report, you should develop an Odoo module that contains: + +* a Qweb template, +* a Qweb report definition with *report_type = qweb-txt*. + +The module *purchase_dilicom_csv* available on the `dilicom Github repository `_ (branch *10.0*) is a good example: it adds a report *Dilicom CSV Order* on purchase orders. This report is a CSV file with one line per order line and 2 columns: EAN13 and order quantity. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/143/10.0 + +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. + +Credits +======= + +Contributors +------------ + +* Alexis de Lattre + +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 https://odoo-community.org. diff --git a/report_txt/__init__.py b/report_txt/__init__.py new file mode 100644 index 00000000..cde864ba --- /dev/null +++ b/report_txt/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/report_txt/__manifest__.py b/report_txt/__manifest__.py new file mode 100644 index 00000000..4fe87656 --- /dev/null +++ b/report_txt/__manifest__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Qweb Text Reports', + 'version': '10.0.1.0.0', + 'category': 'Reporting', + 'license': 'AGPL-3', + 'summary': 'Use Qweb to generate text and CSV reports', + 'author': 'Akretion,Odoo Community Association (OCA)', + 'website': 'http://www.akretion.com', + 'depends': ['report'], + 'installable': True, +} diff --git a/report_txt/models/__init__.py b/report_txt/models/__init__.py new file mode 100644 index 00000000..0eb79479 --- /dev/null +++ b/report_txt/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import ir_actions_report_xml +from . import report diff --git a/report_txt/models/ir_actions_report_xml.py b/report_txt/models/ir_actions_report_xml.py new file mode 100644 index 00000000..432ef956 --- /dev/null +++ b/report_txt/models/ir_actions_report_xml.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api + + +class IrActionsReportXml(models.Model): + _inherit = 'ir.actions.report.xml' + + report_type = fields.Selection(selection_add=[('qweb-txt', 'Text')]) + + @api.model + def render_report(self, res_ids, name, data): + if data.get('report_type') == 'qweb-txt': + return self.env['report'].get_html(res_ids, name, data=data), 'txt' + else: + return super(IrActionsReportXml, self).render_report( + res_ids, name, data) diff --git a/report_txt/models/report.py b/report_txt/models/report.py new file mode 100644 index 00000000..e945e0b2 --- /dev/null +++ b/report_txt/models/report.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, api, _ +from odoo.exceptions import UserError + + +class Report(models.Model): + _inherit = "report" + + @api.model + def _get_report_from_name(self, report_name): + reports = self.env['ir.actions.report.xml'].search([ + ('report_type', '!=', False), + ('report_name', '=', report_name)]) + if not reports: + raise UserError(_( + "No report named '%s' found.") % report_name) + return reports[0] From 5f6c27437ce01d5c7c8f48f32296aefa93b48637 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 31 Dec 2016 14:25:33 +0100 Subject: [PATCH 2/7] Change module name to report_qweb_txt --- {report_txt => report_qweb_txt}/README.rst | 0 {report_txt => report_qweb_txt}/__init__.py | 0 {report_txt => report_qweb_txt}/__manifest__.py | 0 {report_txt => report_qweb_txt}/models/__init__.py | 0 {report_txt => report_qweb_txt}/models/ir_actions_report_xml.py | 0 {report_txt => report_qweb_txt}/models/report.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {report_txt => report_qweb_txt}/README.rst (100%) rename {report_txt => report_qweb_txt}/__init__.py (100%) rename {report_txt => report_qweb_txt}/__manifest__.py (100%) rename {report_txt => report_qweb_txt}/models/__init__.py (100%) rename {report_txt => report_qweb_txt}/models/ir_actions_report_xml.py (100%) rename {report_txt => report_qweb_txt}/models/report.py (100%) diff --git a/report_txt/README.rst b/report_qweb_txt/README.rst similarity index 100% rename from report_txt/README.rst rename to report_qweb_txt/README.rst diff --git a/report_txt/__init__.py b/report_qweb_txt/__init__.py similarity index 100% rename from report_txt/__init__.py rename to report_qweb_txt/__init__.py diff --git a/report_txt/__manifest__.py b/report_qweb_txt/__manifest__.py similarity index 100% rename from report_txt/__manifest__.py rename to report_qweb_txt/__manifest__.py diff --git a/report_txt/models/__init__.py b/report_qweb_txt/models/__init__.py similarity index 100% rename from report_txt/models/__init__.py rename to report_qweb_txt/models/__init__.py diff --git a/report_txt/models/ir_actions_report_xml.py b/report_qweb_txt/models/ir_actions_report_xml.py similarity index 100% rename from report_txt/models/ir_actions_report_xml.py rename to report_qweb_txt/models/ir_actions_report_xml.py diff --git a/report_txt/models/report.py b/report_qweb_txt/models/report.py similarity index 100% rename from report_txt/models/report.py rename to report_qweb_txt/models/report.py From 54f53e13fed9e99f8686809cc8f8a4ded925e823 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 1 Jan 2017 08:20:32 +0100 Subject: [PATCH 3/7] Add demo CSV report on res.users --- report_qweb_txt/README.rst | 4 +++- report_qweb_txt/__manifest__.py | 1 + report_qweb_txt/demo/report.xml | 13 +++++++++++++ report_qweb_txt/demo/res_users_report.xml | 9 +++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 report_qweb_txt/demo/report.xml create mode 100644 report_qweb_txt/demo/res_users_report.xml diff --git a/report_qweb_txt/README.rst b/report_qweb_txt/README.rst index adc77ca9..645e2688 100644 --- a/report_qweb_txt/README.rst +++ b/report_qweb_txt/README.rst @@ -16,7 +16,9 @@ To add a text report, you should develop an Odoo module that contains: * a Qweb template, * a Qweb report definition with *report_type = qweb-txt*. -The module *purchase_dilicom_csv* available on the `dilicom Github repository `_ (branch *10.0*) is a good example: it adds a report *Dilicom CSV Order* on purchase orders. This report is a CSV file with one line per order line and 2 columns: EAN13 and order quantity. +This module provides a small demo report on *Users* called *CSV List*. + +The module *purchase_dilicom_csv* available on the `dilicom Github repository `_ (branch *10.0*) is a better example: it adds a report *Dilicom CSV Order* on purchase orders. This report is a CSV file with one line per order line and 2 columns: EAN13 and order quantity. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot diff --git a/report_qweb_txt/__manifest__.py b/report_qweb_txt/__manifest__.py index 4fe87656..5e853a69 100644 --- a/report_qweb_txt/__manifest__.py +++ b/report_qweb_txt/__manifest__.py @@ -11,5 +11,6 @@ 'author': 'Akretion,Odoo Community Association (OCA)', 'website': 'http://www.akretion.com', 'depends': ['report'], + 'demo': ['demo/report.xml', 'demo/res_users_report.xml'], 'installable': True, } diff --git a/report_qweb_txt/demo/report.xml b/report_qweb_txt/demo/report.xml new file mode 100644 index 00000000..37de6605 --- /dev/null +++ b/report_qweb_txt/demo/report.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/report_qweb_txt/demo/res_users_report.xml b/report_qweb_txt/demo/res_users_report.xml new file mode 100644 index 00000000..65dfb7b9 --- /dev/null +++ b/report_qweb_txt/demo/res_users_report.xml @@ -0,0 +1,9 @@ + + + + + + From 4bb2877940f34b0393a4db00b883528e879ae551 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 6 Jan 2017 00:04:02 +0100 Subject: [PATCH 4/7] Use coma instead of semi-colon as field separator for my demo CSV report --- report_qweb_txt/demo/res_users_report.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/report_qweb_txt/demo/res_users_report.xml b/report_qweb_txt/demo/res_users_report.xml index 65dfb7b9..7df462f8 100644 --- a/report_qweb_txt/demo/res_users_report.xml +++ b/report_qweb_txt/demo/res_users_report.xml @@ -1,8 +1,8 @@ -