summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/models
diff options
context:
space:
mode:
authorJairo Llopis <yajo.sk8@gmail.com>2019-09-27 14:48:39 +0000
committerfw-bot <otis@odoo.com>2019-09-27 17:14:07 +0000
commite5f673087b281f9d74cd1d4960d0d9115711b714 (patch)
treeaea0b4274a35a0ae9d4d164141c535abbf03e797 /addons/mail/static/src/js/models
parent3d4060f7568a061db596fbc1fd9925e3924a79e5 (diff)
[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>
Diffstat (limited to 'addons/mail/static/src/js/models')
-rw-r--r--addons/mail/static/src/js/models/messages/abstract_message.js3
1 files changed, 3 insertions, 0 deletions
diff --git a/addons/mail/static/src/js/models/messages/abstract_message.js b/addons/mail/static/src/js/models/messages/abstract_message.js
index 6a7b02d6e94..ee9374996d4 100644
--- a/addons/mail/static/src/js/models/messages/abstract_message.js
+++ b/addons/mail/static/src/js/models/messages/abstract_message.js
@@ -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");
+ });
},
//--------------------------------------------------------------------------