Browse Source

[ADD] Add base_report_xlsx module

pull/38/head
Adrien Peiffer (ACSONE) 9 years ago
parent
commit
5cf7ea1872
  1. 49
      base_report_xlsx/README.rst
  2. 5
      base_report_xlsx/__init__.py
  3. 19
      base_report_xlsx/__openerp__.py
  4. 5
      base_report_xlsx/models/__init__.py
  5. 16
      base_report_xlsx/models/ir_report.py
  6. 4
      base_report_xlsx/report/__init__.py
  7. 33
      base_report_xlsx/report/report_xlsx.py
  8. BIN
      base_report_xlsx/static/description/icon.png

49
base_report_xlsx/README.rst

@ -0,0 +1,49 @@
.. 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
================
Base report xlsx
================
This module was written to provide a basic report class to generate xlsx report.
Usage
=====
.. 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/9.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Bug Tracker
===========
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.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/{project_repo}/issues/new?body=module:%20base_report_xlsx%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Adrien Peiffer <adrien.peiffer@acsone.eu>
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.

5
base_report_xlsx/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import report

19
base_report_xlsx/__openerp__.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': "Base report xlsx",
'summary': """
Base module to create xlsx report""",
'author': 'ACSONE SA/NV,'
'Odoo Community Association (OCA)',
'website': "http://acsone.eu",
'category': 'Reporting',
'version': '8.0.1.0.0',
'license': 'AGPL-3',
'external_dependencies': {'python': ['xlsxwriter']},
'depends': [
'base',
],
}

5
base_report_xlsx/models/__init__.py

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).+
from . import ir_report

16
base_report_xlsx/models/ir_report.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, api
class IrActionsReportXml(models.Model):
_inherit = 'ir.actions.report.xml'
@api.model
def _check_selection_field_value(self, field, value):
if field == 'report_type' and value == 'xlsx':
return
return super(IrActionsReportXml, self).\
_check_selection_field_value(field, value)

4
base_report_xlsx/report/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import report_xlsx

33
base_report_xlsx/report/report_xlsx.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
# Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import xlsxwriter
from openerp.report.report_sxw import report_sxw
from openerp.api import Environment
from cStringIO import StringIO
class ReportXlsx(report_sxw):
def create(self, cr, uid, ids, data, context=None):
self.env = Environment(cr, uid, context)
report_obj = self.env['ir.actions.report.xml']
report = report_obj.search([('report_name', '=', self.name[7:])])
if report.ids:
self.title = report.name
if report.report_type == 'xlsx':
objs = self.env[self.table].browse(ids)
return self.create_xlsx_report(data, objs)
return super(ReportXlsx, self).create(cr, uid, ids, data, context)
def create_xlsx_report(self, data, objs):
file_data = StringIO()
workbook = xlsxwriter.Workbook(file_data)
self.generate_xlsx_report(workbook, data, objs)
workbook.close()
file_data.seek(0)
return (file_data.read(), 'xlsx')
def generate_xlsx_report(self, workbook, data, objs):
raise NotImplementedError()

BIN
base_report_xlsx/static/description/icon.png

After

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

Loading…
Cancel
Save