summaryrefslogtreecommitdiff
path: root/addons/website_sale_digital
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-09-11 09:39:33 +0000
committerChristophe Simonis <chs@odoo.com>2019-09-11 09:39:33 +0000
commit51354fadb0a1bf5fa797c2539e703cf97d768691 (patch)
tree223535044b0df6473cd343079167c53c0f3673d0 /addons/website_sale_digital
parentda6f24bb4cea8b14eacc3040a06c5e451511240f (diff)
parent50e571acf7c9696954d604de9b4501716fa26646 (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.py11
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()