OCA reporting engine fork for dev and update.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
945 B

  1. # Copyright 2015 ACSONE SA/NV (<http://acsone.eu>)
  2. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  3. from io import BytesIO
  4. from odoo import models
  5. import logging
  6. _logger = logging.getLogger(__name__)
  7. try:
  8. import xlsxwriter
  9. except ImportError:
  10. _logger.debug('Can not import xlsxwriter`.')
  11. class ReportXlsxAbstract(models.AbstractModel):
  12. _name = 'report.report_xlsx.abstract'
  13. def create_xlsx_report(self, docids, data):
  14. objs = self.env[self.env.context.get('active_model')].browse(docids)
  15. file_data = BytesIO()
  16. workbook = xlsxwriter.Workbook(file_data, self.get_workbook_options())
  17. self.generate_xlsx_report(workbook, data, objs)
  18. workbook.close()
  19. file_data.seek(0)
  20. return file_data.read(), 'xlsx'
  21. def get_workbook_options(self):
  22. return {}
  23. def generate_xlsx_report(self, workbook, data, objs):
  24. raise NotImplementedError()