[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,7 +71,7 @@ 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
on regular context, setting docids, or setting data.
@ -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