[IMP]report_xlsx: improvements and adapt to add `report_xlsx_boilerplate` module

- Add the xlsxwriter python external dependency in the manifest as it should have already been included in the past
- Decouple workbook obtation
- Add test file in order to add a test in the `report_xlsx_boilerplate` method. Only used if the latest module is installed.
pull/798/head
GuillemCForgeFlow 2023-10-13 15:15:50 +02:00
parent 3b14b91780
commit 60b69e56e9
3 changed files with 18 additions and 4 deletions

View File

@ -5,7 +5,7 @@ import logging
import re
from io import BytesIO
from odoo import models
from odoo import api, models
_logger = logging.getLogger(__name__)
@ -71,9 +71,9 @@ class ReportXlsxAbstract(models.AbstractModel):
def _get_objs_for_report(self, docids, data):
"""
Returns objects for xlx report. From WebUI these
Returns objects for xlsx report. From WebUI these
are either as docids taken from context.active_ids or
in the case of wizard are in data. Manual calls may rely
in the case of wizard are in data. Manual calls may rely
on regular context, setting docids, or setting data.
:param docids: list of integers, typically provided by
@ -101,7 +101,7 @@ class ReportXlsxAbstract(models.AbstractModel):
def create_xlsx_report(self, docids, data):
objs = self._get_objs_for_report(docids, data)
file_data = BytesIO()
workbook = xlsxwriter.Workbook(file_data, self.get_workbook_options())
workbook = self.get_workbook(file_data)
self.generate_xlsx_report(workbook, data, objs)
workbook.close()
file_data.seek(0)
@ -116,3 +116,15 @@ class ReportXlsxAbstract(models.AbstractModel):
def generate_xlsx_report(self, workbook, data, objs):
raise NotImplementedError()
@api.model
def _get_new_workbook(self, file_data):
"""
:return: empty Workbook
:rtype: xlsxwriter.Workbook object
"""
return xlsxwriter.Workbook(file_data, self.get_workbook_options())
@api.model
def get_workbook(self, file_data):
return self._get_new_workbook(file_data)

View File

@ -1,5 +1,7 @@
# generated from manifests external_dependencies
cryptography
endesive
openpyxl
py3o.formats
py3o.template
xlsxwriter