diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-09-11 09:39:33 +0000 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-09-11 09:39:33 +0000 |
| commit | 51354fadb0a1bf5fa797c2539e703cf97d768691 (patch) | |
| tree | 223535044b0df6473cd343079167c53c0f3673d0 /addons/website_sale_digital | |
| parent | da6f24bb4cea8b14eacc3040a06c5e451511240f (diff) | |
| parent | 50e571acf7c9696954d604de9b4501716fa26646 (diff) | |
[MERGE] forward port branch saas-12.3 up to 50e571acf7c
closes odoo/odoo#36491
Signed-off-by: Christophe Simonis <chs@odoo.com>
Diffstat (limited to 'addons/website_sale_digital')
| -rw-r--r-- | addons/website_sale_digital/controllers/main.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/addons/website_sale_digital/controllers/main.py b/addons/website_sale_digital/controllers/main.py index 717a96bb445..1184655e263 100644 --- a/addons/website_sale_digital/controllers/main.py +++ b/addons/website_sale_digital/controllers/main.py @@ -3,6 +3,8 @@ import base64 import io +import os +import mimetypes from werkzeug.utils import redirect from odoo import http @@ -71,7 +73,7 @@ class WebsiteSaleDigital(CustomerPortal): # Check if this is a valid attachment id attachment = request.env['ir.attachment'].sudo().search_read( [('id', '=', int(attachment_id))], - ["name", "datas", "file_type", "res_model", "res_id", "type", "url"] + ["name", "datas", "mimetype", "res_model", "res_id", "type", "url"] ) if attachment: @@ -105,6 +107,11 @@ class WebsiteSaleDigital(CustomerPortal): return request.not_found() elif attachment["datas"]: data = io.BytesIO(base64.standard_b64decode(attachment["datas"])) - return http.send_file(data, filename=attachment['name'], as_attachment=True) + # we follow what is done in ir_http's binary_content for the extension management + extension = os.path.splitext(attachment["name"] or '')[1] + extension = extension if extension else mimetypes.guess_extension(attachment["mimetype"] or '') + filename = attachment['name'] + filename = filename if os.path.splitext(filename)[1] else filename + extension + return http.send_file(data, filename=filename, as_attachment=True) else: return request.not_found() |
