Вы можете использовать веб-контроллер для этого:
from openerp.http import request
from openerp import http
from openerp.addons.web.controllers.main import serialize_exception,content_disposition
class Binary(http.Controller):
@http.route('/web/binary/download_report', type='http', auth="public")
@serialize_exception
def download_xls_document(self, path, filename="My report.xlsx", **kw):
with open(path, "rb") as pdf_file:
return request.make_response(pdf_file.read(),
[('Content-Type', 'application/octet-stream'),
('Content-Disposition', content_disposition(filename))])
и report_excel
метод должен вернуть:
return {
'type': 'ir.actions.act_url',
'url': '/web/binary/download_report?path=%s&filename=%s' % (path, "The report name.xlsx"),
'target': 'blank',
}