[FIX] mail: Support nameless attachments

`ir.attachment` records do not require to have a filename set.

In `AttachmentBox`, a filename is always set, although in case it's missing it was untranslated. I fixed that.

In cases where `AttachmentBox` is not used but its underlying templates are rendered using other means, a user could get a client-side error like this one when browsing a record that had an attachment without filename:

<details><summary>Error</summary>

```
Error:
TypeError: dict.attachment.filename.split is not a function

https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:26
Rastreo de error:
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:26:45
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
call@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:154:35
anonymous/<@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:340:33
foreach@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:180:25
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:338:25
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
call@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:154:35
anonymous/<@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:27:31
foreach@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:180:25
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:11:23
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:450:26
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:480:29
call@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:154:35
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:20:30
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:450:26
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:480:29
call@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:154:35
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:15:31
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:450:26
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:480:29
call@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:154:35
anonymous@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js line 469 > Function:11:31
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:458:58
render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:450:26
_render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:480:29
render@https://www.tecnativa.com/web/static/lib/qweb/qweb2.js:450:26
render@https://www.tecnativa.com/mail/static/src/js/thread_widget.js:183:28
_fetchAndRenderThread/<@https://www.tecnativa.com/mail/static/src/js/thread_field.js:124:36
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3276:89
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
Deferred/</deferred[tuple[0]]@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3321:62
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3276:89
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3283:104
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
Deferred/</deferred[tuple[0]]@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3321:62
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3283:104
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
Deferred/</deferred[tuple[0]]@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3321:62
rpc/<@https://www.tecnativa.com/web/static/src/js/services/ajax_service.js:16:29
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3276:89
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
Deferred/</deferred[tuple[0]]@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3321:62
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
Deferred/</deferred[tuple[0]]@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3321:62
genericJsonRpc/<@https://www.tecnativa.com/web/static/src/js/core/ajax.js:65:18
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3276:89
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
then/</</<@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3283:104
fire@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3119:58
fireWith@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:3231:49
done@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:9275:42
callback@https://www.tecnativa.com/web/static/lib/jquery/jquery.js:9685:57
```

The error is produced when trying to render this line: https://github.com/odoo/odoo/blob/66c5053a3d1f8cb456929453a62869c95eccf86a/addons/mail/static/src/xml/thread.xml#L506

</details>

This patch ensures all attachment has a filename, and fixes that problem.

--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
@Tecnativa TT19555

closes odoo/odoo#37546

Forward-port-of: odoo/odoo#37253
X-original-commit: ebba3c9fa709dccf4cab91e9f37aa3eaa24c7d21
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
This commit is contained in:
Jairo Llopis
2019-09-27 17:14:07 +00:00
committed by fw-bot
parent 3d4060f756
commit e5f673087b
2 changed files with 5 additions and 1 deletions
+2 -1
View File
@@ -7,6 +7,7 @@ var Widget = require('web.Widget');
var DocumentViewer = require('mail.DocumentViewer');
var QWeb = core.qweb;
var _t = core._t;
var AttachmentBox = Widget.extend({
template: 'mail.chatter.AttachmentBox',
@@ -36,7 +37,7 @@ var AttachmentBox = Widget.extend({
_.each(attachments, function (attachment) {
// required for compatibility with the chatter templates.
attachment.url = '/web/content/' + attachment.id + '?download=true';
attachment.filename = attachment.name || 'unnamed';
attachment.filename = attachment.name || _t('unnamed');
});
var sortedAttachments = _.partition(attachments, function (att) {
return att.mimetype && att.mimetype.split('/')[0] === 'image';
@@ -48,6 +48,9 @@ var AbstractMessage = Class.extend({
this._type = data.message_type || undefined;
this._processAttachmentURL();
this._attachmentIDs.forEach(function (attachment) {
attachment.filename = attachment.filename || attachment.name || _t("unnamed");
});
},
//--------------------------------------------------------------------------