From 497dd50e7c9ea4526bd49d20d4ccfb7ae8ea9123 Mon Sep 17 00:00:00 2001 From: Mihran Thalhath Date: Tue, 18 Jan 2022 12:00:20 +0530 Subject: [PATCH] [FIX] report_xlsx: fix generation of pdf reports the report handler for xlsx added over here is always returning `true` even if the report being generated is not xlsx. Due to this, the report handler doesn't check for other report types at https://github.com/odoo/odoo/blob/b309d3a99f8ff4a43a21c4772c344ed3250e319f/addons/web/static/src/webclient/actions/action_service.js#L1019 and thus doesn't generate any other reports. So if the converter is not xlsx, return false instead of true. Also, updating the docids and context in the report_routes controller only needs to be done if the converter is xlsx and not in any other case. --- report_xlsx/__manifest__.py | 2 +- report_xlsx/controllers/main.py | 18 +++++++++--------- .../src/js/report/action_manager_report.esm.js | 3 ++- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/report_xlsx/__manifest__.py b/report_xlsx/__manifest__.py index 5af605388..aec0ef9bd 100644 --- a/report_xlsx/__manifest__.py +++ b/report_xlsx/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Creu Blanca," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/reporting-engine", "category": "Reporting", - "version": "15.0.1.0.1", + "version": "15.0.1.0.2", "development_status": "Production/Stable", "license": "AGPL-3", "external_dependencies": {"python": ["xlsxwriter", "xlrd"]}, diff --git a/report_xlsx/controllers/main.py b/report_xlsx/controllers/main.py index 9f68a0f9f..a3bd661e6 100644 --- a/report_xlsx/controllers/main.py +++ b/report_xlsx/controllers/main.py @@ -24,16 +24,16 @@ _logger = logging.getLogger(__name__) class ReportController(report.ReportController): @route() def report_routes(self, reportname, docids=None, converter=None, **data): - report = request.env["ir.actions.report"]._get_report_from_name(reportname) - context = dict(request.env.context) - if docids: - docids = [int(i) for i in docids.split(",")] - if data.get("options"): - data.update(json.loads(data.pop("options"))) - if data.get("context"): - data["context"] = json.loads(data["context"]) - context.update(data["context"]) if converter == "xlsx": + report = request.env["ir.actions.report"]._get_report_from_name(reportname) + context = dict(request.env.context) + if docids: + docids = [int(i) for i in docids.split(",")] + if data.get("options"): + data.update(json.loads(data.pop("options"))) + if data.get("context"): + data["context"] = json.loads(data["context"]) + context.update(data["context"]) xlsx = report.with_context(**context)._render_xlsx(docids, data=data)[0] xlsxhttpheaders = [ ( diff --git a/report_xlsx/static/src/js/report/action_manager_report.esm.js b/report_xlsx/static/src/js/report/action_manager_report.esm.js index df85df04b..9984801a2 100644 --- a/report_xlsx/static/src/js/report/action_manager_report.esm.js +++ b/report_xlsx/static/src/js/report/action_manager_report.esm.js @@ -48,6 +48,7 @@ registry } else if (onClose) { onClose(); } + return Promise.resolve(true); } - return Promise.resolve(true); + return Promise.resolve(false); });