This question has been flagged
1 Reply
5859 Views

How to call/request from Odoo website portal to genetate excel file report.

I'm using "report_xlsx" for the excel file report.

For PDF reports it works perfectly something like that:

pdf = request.env['report'].sudo().get_pdf(cases, 'module.report_name', data=datas)

pdfhttpheaders = [

('Content-Type', 'application/pdf'), ('Content-Length', len(pdf)),

('Content-Disposition', 'attachment; filename=Report.pdf;')

]

return request.make_response(pdf, headers=pdfhttpheaders)


For excel I tried the following:

xlsx = {'type': 'ir.actions.report.xml',

'report_name': 'module.report_name.xlsx',

'datas': datas,

'name': 'Report Name'

}

  xlsxhttpheaders = [

 ('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'), ('Content-Length', len(xlsx)),

 ('Content-Disposition', 'attachment; filename=Report.xlsx;')

return request.make_response( xlsx , headers= xlsxhttpheaders )

But it does not work.....

Any tips ?

Avatar
Discard
Best Answer

Well, I guess the simplest way would be to use an existing module for that. Please check the app store:

https://apps.odoo.com/apps/modules/11.0/report_xlsx/

Avatar
Discard
Author

Maybe I did not explain my issue clearly.

I'm already using report_xlsx and my report is working fine within the normal interface.

My issue is how to call the same report from the website portal. I can't seem to make it work.

You mean from the front-end /customer portal? What is the error?

Author

Yes, on the front-end customer portal.

The error:

2018-04-23 17:24:51,306 72725 INFO db1 werkzeug: 192.168.20.1 - - [23/Apr/2018 17:24:51] "POST /my/km_reports HTTP/1.1" 500 -

2018-04-23 17:24:51,312 72725 ERROR db1 werkzeug: Error on request:

Traceback (most recent call last):

File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 180, in run_wsgi

execute(self.server.app)

File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 168, in execute

application_iter = app(environ, start_response)

File "/opt/odoo/odoo-10_07_23_017/odoo/service/server.py", line 250, in app

return self.app(e, s)

File "/opt/odoo/odoo-10_07_23_017/odoo/service/wsgi_server.py", line 184, in application

return application_unproxied(environ, start_response)

File "/opt/odoo/odoo-10_07_23_017/odoo/service/wsgi_server.py", line 170, in application_unproxied

result = handler(environ, start_response)

File "/opt/odoo/odoo-10_07_23_017/odoo/http.py", line 1308, in __call__

return self.dispatch(environ, start_response)

File "/opt/odoo/odoo-10_07_23_017/odoo/http.py", line 1282, in __call__

return self.app(environ, start_wrapped)

File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 591, in __call__

return self.app(environ, start_response)

File "/opt/odoo/odoo-10_07_23_017/odoo/http.py", line 1486, in dispatch

return response(environ, start_response)

File "/usr/lib/python2.7/dist-packages/werkzeug/wrappers.py", line 1220, in __call__

app_iter, status, headers = self.get_wsgi_response(environ)

File "/usr/lib/python2.7/dist-packages/werkzeug/wrappers.py", line 1210, in get_wsgi_response

return app_iter, self.status, headers.to_wsgi_list()

File "/usr/lib/python2.7/dist-packages/werkzeug/datastructures.py", line 1194, in to_wsgi_list

return [(to_native(k), v.encode('latin1')) for k, v in self]

AttributeError: 'int' object has no attribute 'encode'