From 7b34e648ff8ed68d7b9ae3bb84e9606c7320560f Mon Sep 17 00:00:00 2001 From: ernesto Date: Fri, 24 May 2019 18:52:51 -0400 Subject: [PATCH] report_xml: add custom filename to response headers --- report_xml/__manifest__.py | 2 +- report_xml/controllers/main.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/report_xml/__manifest__.py b/report_xml/__manifest__.py index 8bce2601..95884dd4 100644 --- a/report_xml/__manifest__.py +++ b/report_xml/__manifest__.py @@ -4,7 +4,7 @@ { "name": "XML Reports", - "version": "11.0.1.0.1", + "version": "11.0.1.0.2", "category": "Reporting", "website": "https://github.com/OCA/reporting-engine", "author": "Grupo ESOC IngenierĂ­a de Servicios, " diff --git a/report_xml/controllers/main.py b/report_xml/controllers/main.py index 8c35600e..d0f47cba 100644 --- a/report_xml/controllers/main.py +++ b/report_xml/controllers/main.py @@ -2,8 +2,11 @@ # Copyright (C) 2014-2015 Grupo ESOC # License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html). +import time + from odoo.addons.web.controllers import main as report -from odoo.http import content_disposition, route +from odoo.http import content_disposition, request, route +from odoo.tools.safe_eval import safe_eval class ReportController(report.ReportController): @@ -21,7 +24,17 @@ class ReportController(report.ReportController): response.data = response.data.strip() response.headers.set("Content-Type", "text/xml") response.headers.set('Content-length', len(response.data)) + # set filename + action_report_obj = request.env['ir.actions.report'] + report = action_report_obj._get_report_from_name(reportname) + filename = report.name + if docids: + ids = [int(x) for x in docids.split(",")] + records = request.env[report.model].browse(ids) + if report.print_report_name and not len(records) > 1: + filename = safe_eval(report.print_report_name, + {'object': records, 'time': time}) response.headers.set( 'Content-Disposition', - content_disposition(reportname + ".xml")) + content_disposition(filename + ".xml")) return response