[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 <model_name_end-id-field> 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) <len@odoo.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user