8 changed files with 0 additions and 122 deletions
			
			
		@ -1,55 +0,0 @@ | 
				
			|||||
.. 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 provides a basic report class to generate xlsx report. | 
					 | 
				
			||||
 | 
					 | 
				
			||||
Installation | 
					 | 
				
			||||
============ | 
					 | 
				
			||||
 | 
					 | 
				
			||||
Make sure you have ``xlsxwriter`` Python module installed:: | 
					 | 
				
			||||
 | 
					 | 
				
			||||
$ pip install xlsxwriter | 
					 | 
				
			||||
 | 
					 | 
				
			||||
Usage | 
					 | 
				
			||||
===== | 
					 | 
				
			||||
 | 
					 | 
				
			||||
An example of XLSX report for partners: | 
					 | 
				
			||||
 | 
					 | 
				
			||||
A python class :: | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    class PartnerXlsx(ReportXlsx): | 
					 | 
				
			||||
     | 
					 | 
				
			||||
        def generate_xlsx_report(self, workbook, data, partners): | 
					 | 
				
			||||
            for obj in partners: | 
					 | 
				
			||||
                report_name = obj.name | 
					 | 
				
			||||
                # One sheet by partner | 
					 | 
				
			||||
                sheet = workbook.add_worksheet(report_name[:31]) | 
					 | 
				
			||||
                bold = workbook.add_format({'bold': True}) | 
					 | 
				
			||||
                sheet.write(0, 0, obj.name, bold) | 
					 | 
				
			||||
 | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    PartnerXlsx('report.res.partner.xlsx', | 
					 | 
				
			||||
                'res.partner') | 
					 | 
				
			||||
 | 
					 | 
				
			||||
To manipulate the ``workbook`` and ``sheet`` objects, refer to the | 
					 | 
				
			||||
`documentation <http://xlsxwriter.readthedocs.org/>`_ of ``xlsxwriter``. | 
					 | 
				
			||||
 | 
					 | 
				
			||||
A report XML record :: | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    <report  | 
					 | 
				
			||||
        id="partner_xlsx" | 
					 | 
				
			||||
        model="res.partner" | 
					 | 
				
			||||
        string="Print to XLSX" | 
					 | 
				
			||||
        report_type="xlsx" | 
					 | 
				
			||||
        name="res.partner.xlsx" | 
					 | 
				
			||||
        file="res.partner.xlsx" | 
					 | 
				
			||||
        attachment_use="False" | 
					 | 
				
			||||
    /> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
@ -1,2 +0,0 @@ | 
				
			|||||
from . import models | 
					 | 
				
			||||
from . import report | 
					 | 
				
			||||
@ -1,15 +0,0 @@ | 
				
			|||||
{ | 
					 | 
				
			||||
    'name': "Base report xlsx", | 
					 | 
				
			||||
    'summary': """ | 
					 | 
				
			||||
        Simple upgradation of v9 OCA module 'report_xlsx' to v10""", | 
					 | 
				
			||||
    'author': 'Cybrosys Techno Solutions', | 
					 | 
				
			||||
    'company': 'Cybrosys Techno Solutions', | 
					 | 
				
			||||
    'website': 'http://www.cybrosys.com', | 
					 | 
				
			||||
    'category': 'Reporting', | 
					 | 
				
			||||
    'version': '0.2', | 
					 | 
				
			||||
    'license': 'AGPL-3', | 
					 | 
				
			||||
    'external_dependencies': {'python': ['xlsxwriter']}, | 
					 | 
				
			||||
    'depends': [ | 
					 | 
				
			||||
        'base', | 
					 | 
				
			||||
    ], | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1 +0,0 @@ | 
				
			|||||
from . import ir_report | 
					 | 
				
			||||
@ -1,7 +0,0 @@ | 
				
			|||||
from openerp import fields, models | 
					 | 
				
			||||
 | 
					 | 
				
			||||
 | 
					 | 
				
			||||
class IrActionsReportXml(models.Model): | 
					 | 
				
			||||
    _inherit = 'ir.actions.report.xml' | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    report_type = fields.Selection(selection_add=[("xlsx", "xlsx")]) | 
					 | 
				
			||||
@ -1 +0,0 @@ | 
				
			|||||
from . import report_xlsx | 
					 | 
				
			||||
@ -1,41 +0,0 @@ | 
				
			|||||
from cStringIO import StringIO | 
					 | 
				
			||||
 | 
					 | 
				
			||||
from openerp.report.report_sxw import report_sxw | 
					 | 
				
			||||
from openerp.api import Environment | 
					 | 
				
			||||
 | 
					 | 
				
			||||
import logging | 
					 | 
				
			||||
_logger = logging.getLogger(__name__) | 
					 | 
				
			||||
 | 
					 | 
				
			||||
try: | 
					 | 
				
			||||
    import xlsxwriter | 
					 | 
				
			||||
except ImportError: | 
					 | 
				
			||||
    _logger.debug('Can not import xlsxwriter`.') | 
					 | 
				
			||||
 | 
					 | 
				
			||||
 | 
					 | 
				
			||||
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': | 
					 | 
				
			||||
                return self.create_xlsx_report(ids, data, report) | 
					 | 
				
			||||
        return super(ReportXlsx, self).create(cr, uid, ids, data, context) | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    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() | 
					 | 
				
			||||
        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() | 
					 | 
				
			||||
| 
		 Before Width: | Height: | Size: 9.2 KiB  | 
					Loading…
					
					
				
		Reference in new issue