From 87703fa58b7ea3b5e44a635965f3b7df4f52ebc9 Mon Sep 17 00:00:00 2001 From: Nans Lefebvre Date: Mon, 9 Dec 2019 13:26:18 +0000 Subject: [PATCH] [FIX] base: add extension to downloads without filenames The filename can be obtained in 3 ways when downloading a file, in order: - by the filename argument - by the filename_field argument - a default one is computed as backup. In the last case, there is by construction no file extension. The filename is made from the record's model name, id and field. However the model name almost certainly contains a ".", which is the standard extension separator for filenames. As a result is considered to be the existing extension, so we don't try to guess it from the mimetype. To keep the existing default filename convention, we always add the guessed extension in this case. opw 2149612 closes odoo/odoo#41924 X-original-commit: f62a49a2f83bcce66eb9c3b08687ee5a37def503 Signed-off-by: Nans Lefebvre (len) --- odoo/addons/base/models/ir_http.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/odoo/addons/base/models/ir_http.py b/odoo/addons/base/models/ir_http.py index f89afcb219f..35a3935f7be 100644 --- a/odoo/addons/base/models/ir_http.py +++ b/odoo/addons/base/models/ir_http.py @@ -376,10 +376,12 @@ class IrHttp(models.AbstractModel): content = record[field] or '' # filename + default_filename = False if not filename: if filename_field in record: filename = record[filename_field] if not filename: + default_filename = True filename = "%s-%s-%s" % (record._name, record.id, field) if not mimetype: @@ -391,7 +393,7 @@ class IrHttp(models.AbstractModel): # extension _, existing_extension = os.path.splitext(filename) - if not existing_extension: + if not existing_extension or default_filename: extension = mimetypes.guess_extension(mimetype) if extension: filename = "%s%s" % (filename, extension)