Browse Source

[MIG] report_xlsx - Backport from the 9.0 branch

pull/50/head
sebalix 8 years ago
parent
commit
3c2802f157
  1. 22
      report_xlsx/README.rst
  2. 2
      report_xlsx/models/ir_report.py
  3. 13
      report_xlsx/report/report_xlsx.py
  4. BIN
      report_xlsx/static/description/icon.png
  5. 2
      requirements.txt

22
report_xlsx/README.rst

@ -8,6 +8,13 @@ Base report xlsx
This module provides a basic report class to generate xlsx report. This module provides a basic report class to generate xlsx report.
Installation
============
Make sure you have ``xlsxwriter`` Python module installed::
$ pip install xlsxwriter
Usage Usage
===== =====
@ -18,7 +25,7 @@ A python class ::
from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx
class partner_xlsx(ReportXlsx): class partner_xlsx(ReportXlsx):
def generate_xlsx_report(self, workbook, data, partners): def generate_xlsx_report(self, workbook, data, partners):
for obj in partners: for obj in partners:
report_name = obj.name report_name = obj.name
@ -31,9 +38,12 @@ A python class ::
partner_xlsx('report.res.partner.xlsx', partner_xlsx('report.res.partner.xlsx',
'res.partner') 'res.partner')
To manipulate the ``workbook`` and ``sheet`` objects, refer to the
`documentation <http://xlsxwriter.readthedocs.org/>`_ of ``xlsxwriter``.
A report XML record :: A report XML record ::
<report
<report
id="partner_xlsx" id="partner_xlsx"
model="res.partner" model="res.partner"
string="Print to XLSX" string="Print to XLSX"
@ -45,7 +55,7 @@ A report XML record ::
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot :alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/143/9.0
:target: https://runbot.odoo-community.org/runbot/143/8.0
Bug Tracker Bug Tracker
=========== ===========
@ -53,11 +63,13 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
In case of trouble, please check there if your issue has already been reported. 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 If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_xlsx%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`here <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_xlsx%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits Credits
======= =======
* Icon taken from http://www.icons101.com/icon/id_67712/setid_2096/Boxed_Metal_by_Martin/xlsx.
Contributors Contributors
------------ ------------
@ -74,4 +86,4 @@ 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. 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.
To contribute to this module, please visit https://odoo-community.org.

2
report_xlsx/models/ir_report.py

@ -2,7 +2,7 @@
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>) # Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import api, fields, models
from openerp import fields, models
class IrActionsReportXml(models.Model): class IrActionsReportXml(models.Model):

13
report_xlsx/report/report_xlsx.py

@ -2,9 +2,10 @@
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>) # Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from cStringIO import StringIO
from openerp.report.report_sxw import report_sxw from openerp.report.report_sxw import report_sxw
from openerp.api import Environment from openerp.api import Environment
from cStringIO import StringIO
import logging import logging
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@ -24,11 +25,15 @@ class ReportXlsx(report_sxw):
if report.ids: if report.ids:
self.title = report.name self.title = report.name
if report.report_type == 'xlsx': if report.report_type == 'xlsx':
objs = self.env[self.table].browse(ids)
return self.create_xlsx_report(data, objs)
return self.create_xlsx_report(ids, data, report)
return super(ReportXlsx, self).create(cr, uid, ids, data, context) return super(ReportXlsx, self).create(cr, uid, ids, data, context)
def create_xlsx_report(self, data, objs):
def create_xlsx_report(self, ids, data, report):
self.parser_instance = self.parser(
self.env.cr, self.env.uid, self.name2, self.env.context)
objs = self.getObjects(
self.env.cr, self.env.uid, ids, self.env.context)
self.parser_instance.set_context(objs, data, ids, 'xlsx')
file_data = StringIO() file_data = StringIO()
workbook = xlsxwriter.Workbook(file_data) workbook = xlsxwriter.Workbook(file_data)
self.generate_xlsx_report(workbook, data, objs) self.generate_xlsx_report(workbook, data, objs)

BIN
report_xlsx/static/description/icon.png

Before

Width: 128  |  Height: 128  |  Size: 9.2 KiB

After

Width: 128  |  Height: 128  |  Size: 15 KiB

2
requirements.txt

@ -1 +1 @@
xlwt
xlwt xlsxwriter
Loading…
Cancel
Save