summaryrefslogtreecommitdiff
path: root/addons/mail
diff options
context:
space:
mode:
authorThanh Dodeur <tso@odoo.com>2019-04-05 08:11:26 +0000
committerThanh Dodeur <tso@odoo.com>2019-06-05 09:12:13 +0000
commitc212cfe8992292f57acacd809de26e1817533095 (patch)
tree4ab6e06aa7e9e74087bc81fac2047b7c113ea941 /addons/mail
parentd6847bacb1d2425466003985f9e96837f22c2148 (diff)
[REF] *: removes datas_fname from ir.attachment
This commit removes the field `datas_fname` from `ir.attachment` as it was unnecessary and most of the time the duplicate of `name` or `url`. Task #1909865 closes odoo/odoo#32976 Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
Diffstat (limited to 'addons/mail')
-rw-r--r--addons/mail/data/mail_demo.xml6
-rw-r--r--addons/mail/models/mail_mail.py4
-rw-r--r--addons/mail/models/mail_message.py5
-rw-r--r--addons/mail/models/mail_template.py1
-rw-r--r--addons/mail/models/mail_thread.py1
-rw-r--r--addons/mail/static/src/js/attachment_box.js2
-rw-r--r--addons/mail/static/src/js/chatter.js2
-rw-r--r--addons/mail/static/tests/chatter_tests.js20
-rw-r--r--addons/mail/static/tests/document_viewer_tests.js14
-rw-r--r--addons/mail/views/mail_message_views.xml10
-rw-r--r--addons/mail/wizard/mail_compose_message.py1
11 files changed, 25 insertions, 41 deletions
diff --git a/addons/mail/data/mail_demo.xml b/addons/mail/data/mail_demo.xml
index b4e7f2c092e..3cfb89792ae 100644
--- a/addons/mail/data/mail_demo.xml
+++ b/addons/mail/data/mail_demo.xml
@@ -41,12 +41,10 @@ virginie@agrolait.fr</pre></field>
<!-- Admin and Demo with attachments -->
<record id="msg_discus4_attach1" model="ir.attachment">
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
- <field name="datas_fname">catalog.doc</field>
<field name="name">catalog.doc</field>
</record>
<record id="msg_discus4_attach2" model="ir.attachment">
- <field name="datas_fname">activity_graph_2012.jpg</field>
- <field name="name">activity_graph_2012</field>
+ <field name="name">activity_graph_2012.jpg</field>
<field name="datas" type="base64" file="mail/static/img/msg_discus4_attach2-datas.jpg"/>
</record>
<record id="msg_discus4" model="mail.message">
@@ -82,12 +80,10 @@ virginie@agrolait.fr</pre></field>
<!-- Discussion: attachments and spec [DEMO: search on has_attachments -->
<record id="msg_discus6_attach1" model="ir.attachment">
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
- <field name="datas_fname">RedHat_spec.doc</field>
<field name="name">RedHat_spec.doc</field>
</record>
<record id="msg_discus6_attach2" model="ir.attachment">
<field name="datas">bWlncmF0aW9uIHRlc3Q=</field>
- <field name="datas_fname">RedHat_spec_draft_v3.doc</field>
<field name="name">RedHat_spec_draft_v3.doc</field>
</record>
<record id="msg_discus6" model="mail.message">
diff --git a/addons/mail/models/mail_mail.py b/addons/mail/models/mail_mail.py
index ffc8aa33399..3b575b08405 100644
--- a/addons/mail/models/mail_mail.py
+++ b/addons/mail/models/mail_mail.py
@@ -294,8 +294,8 @@ class MailMail(models.Model):
# load attachment binary data with a separate read(), as prefetching all
# `datas` (binary field) could bloat the browse cache, triggerring
# soft/hard mem limits with temporary data.
- attachments = [(a['datas_fname'], base64.b64decode(a['datas']), a['mimetype'])
- for a in attachments.sudo().read(['datas_fname', 'datas', 'mimetype'])]
+ attachments = [(a['name'], base64.b64decode(a['datas']), a['mimetype'])
+ for a in attachments.sudo().read(['name', 'datas', 'mimetype'])]
# specific behavior to customize the send email for notified partners
email_list = []
diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py
index e1fc850d433..2fab423412b 100644
--- a/addons/mail/models/mail_message.py
+++ b/addons/mail/models/mail_message.py
@@ -336,11 +336,11 @@ class Message(models.Model):
partner_tree = dict((partner[0], partner) for partner in partners_names)
# 2. Attachments as SUPERUSER, because could receive msg and attachments for doc uid cannot see
- attachments_data = attachments.sudo().read(['id', 'datas_fname', 'name', 'mimetype'])
+ attachments_data = attachments.sudo().read(['id', 'name', 'mimetype'])
safari = request and request.httprequest.user_agent.browser == 'safari'
attachments_tree = dict((attachment['id'], {
'id': attachment['id'],
- 'filename': attachment['datas_fname'],
+ 'filename': attachment['name'],
'name': attachment['name'],
'mimetype': 'application/octet-stream' if safari and attachment['mimetype'] and 'video' in attachment['mimetype'] else attachment['mimetype'],
}) for attachment in attachments_data)
@@ -1035,7 +1035,6 @@ class Message(models.Model):
attachment = Attachments.create({
'name': name,
'datas': match.group(2),
- 'datas_fname': name,
'res_model': values.get('model'),
'res_id': values.get('res_id'),
})
diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py
index 0ced62009dd..c2f601003d7 100644
--- a/addons/mail/models/mail_template.py
+++ b/addons/mail/models/mail_template.py
@@ -549,7 +549,6 @@ class MailTemplate(models.Model):
for attachment in attachments:
attachment_data = {
'name': attachment[0],
- 'datas_fname': attachment[0],
'datas': attachment[1],
'type': 'binary',
'res_model': 'mail.message',
diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py
index 17d6941377b..e419c5430b8 100644
--- a/addons/mail/models/mail_thread.py
+++ b/addons/mail/models/mail_thread.py
@@ -1633,7 +1633,6 @@ class MailThread(models.AbstractModel):
'name': name,
'datas': base64.b64encode(content),
'type': 'binary',
- 'datas_fname': name,
'description': name,
'res_model': model,
'res_id': res_id,
diff --git a/addons/mail/static/src/js/attachment_box.js b/addons/mail/static/src/js/attachment_box.js
index f58c64f26e7..cc5d53ee1c0 100644
--- a/addons/mail/static/src/js/attachment_box.js
+++ b/addons/mail/static/src/js/attachment_box.js
@@ -36,7 +36,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.datas_fname || 'unnamed';
+ attachment.filename = attachment.name || 'unnamed';
});
var sortedAttachments = _.partition(attachments, function (att) {
return att.mimetype && att.mimetype.split('/')[0] === 'image';
diff --git a/addons/mail/static/src/js/chatter.js b/addons/mail/static/src/js/chatter.js
index 6cd159c5ad3..f81bcb2d0e2 100644
--- a/addons/mail/static/src/js/chatter.js
+++ b/addons/mail/static/src/js/chatter.js
@@ -258,7 +258,7 @@ var Chatter = Widget.extend({
model: 'ir.attachment',
method: 'search_read',
domain: domain,
- fields: ['id', 'name', 'datas_fname', 'mimetype'],
+ fields: ['id', 'name', 'mimetype'],
}).then(function (result) {
self._areAttachmentsLoaded = true;
self.attachments = result;
diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js
index 82772d5f3a1..91b9a28661e 100644
--- a/addons/mail/static/tests/chatter_tests.js
+++ b/addons/mail/static/tests/chatter_tests.js
@@ -170,15 +170,14 @@ QUnit.module('Chatter', {
url:{type:'char', string:'url'},
type:{ type:'selection', selection:[['url',"URL"],['binary',"BINARY"]]},
mimetype:{type:'char', string:"mimetype"},
- datas_fname:{type:'char', string:"filename"},
},
records:[
- {id:1, name:"name1", type:'url', mimetype:'image/png', datas_fname:'filename.jpg',
+ {id:1, type:'url', mimetype:'image/png', name:'filename.jpg',
res_id: 7, res_model: 'partner'},
- {id:2, name:"name2", type:'binary', mimetype:"application/x-msdos-program",
- datas_fname:"file2.txt", res_id: 7, res_model: 'partner'},
- {id:3, name:"name2", type:'binary', mimetype:"application/x-msdos-program",
- datas_fname:"file2.txt", res_id: 5, res_model: 'partner'},
+ {id:2, type:'binary', mimetype:"application/x-msdos-program",
+ name:"file2.txt", res_id: 7, res_model: 'partner'},
+ {id:3, type:'binary', mimetype:"application/x-msdos-program",
+ name:"file3.txt", res_id: 5, res_model: 'partner'},
],
},
};
@@ -321,10 +320,9 @@ QUnit.test('Activity Done by uploading a file', async function (assert) {
$(window).trigger(fileuploadID, [{
id:3,
- name:"name2",
type:'binary',
mimetype:"application/x-msdos-program",
- datas_fname:"file2.txt",
+ name:"file2.txt",
res_id: 5,
res_model: 'partner'
}]);
@@ -438,12 +436,12 @@ QUnit.test('attachmentBox basic rendering', async function (assert) {
assert.hasAttrValue($resIdInput, 'value', '7');
assert.hasAttrValue($resIdInput, 'type', 'hidden');
- assert.strictEqual(form.$('.o_attachment_title').text(), 'name1',
+ assert.strictEqual(form.$('.o_attachment_title').text(), 'filename.jpg',
"the image name should be correct");
// since there are two elements "Download name2"; one "name" and the other "txt" as text content, the following test
// asserts both at the same time.
- assert.strictEqual(form.$('a[title = "Download name2"]').text().trim(), 'name2txt',
- "the attachment name should be correct");
+ assert.strictEqual(form.$('a[title = "Download file2.txt"]').text().trim(), 'file2.txttxt',
+ "the attachment name and the extension display should be correct");
assert.ok(form.$('.o_attachment_image').css('background-image').indexOf('/web/image/1/160x160/?crop=true') >= 0,
"the attachment image URL should be correct");
assert.hasAttrValue(form.$('.o_attachment_download').eq(0), 'href', '/web/content/1?download=true',
diff --git a/addons/mail/static/tests/document_viewer_tests.js b/addons/mail/static/tests/document_viewer_tests.js
index b5748ab72ee..404a6f267aa 100644
--- a/addons/mail/static/tests/document_viewer_tests.js
+++ b/addons/mail/static/tests/document_viewer_tests.js
@@ -65,12 +65,12 @@ var createViewer = function (params) {
QUnit.module('DocumentViewer', {
beforeEach: function () {
this.attachments = [
- {id: 1, datas_fname: 'filePdf.pdf', type: 'binary', mimetype: 'application/pdf', datas:'R0lGOP////ywAADs='},
- {id: 2, name: 'urlYoutubeName', type: 'url', mimetype: '', url: 'https://youtu.be/FYqW0Gdwbzk', datas_fname: 'urlYoutube'},
- {id: 3, name: 'urlGoogle', type: 'url', mimetype: '', url: 'https://www.google.com', datas_fname: 'urlRandom'},
- {id: 4, name: 'text.html', datas_fname: 'text.html', type: 'binary', mimetype: 'text/html', datas:'testee'},
- {id: 5, name: 'video.mp4', datas_fname: 'video.mp4', type: 'binary', mimetype: 'video/mp4', datas:'R0lDOP////ywAADs='},
- {id: 6, name: 'image.jpg', datas_fname: 'image.jpg', type: 'binary', mimetype: 'image/jpeg', checksum: 999, datas:'R0lVOP////ywAADs='},
+ {id: 1, name: 'filePdf.pdf', type: 'binary', mimetype: 'application/pdf', datas:'R0lGOP////ywAADs='},
+ {id: 2, name: 'urlYoutube', type: 'url', mimetype: '', url: 'https://youtu.be/FYqW0Gdwbzk'},
+ {id: 3, name: 'urlRandom', type: 'url', mimetype: '', url: 'https://www.google.com'},
+ {id: 4, name: 'text.html', type: 'binary', mimetype: 'text/html', datas:'testee'},
+ {id: 5, name: 'video.mp4', type: 'binary', mimetype: 'video/mp4', datas:'R0lDOP////ywAADs='},
+ {id: 6, name: 'image.jpg', type: 'binary', mimetype: 'image/jpeg', checksum: 999, datas:'R0lVOP////ywAADs='},
];
},
}, function () {
@@ -116,7 +116,7 @@ QUnit.module('DocumentViewer', {
},
});
- assert.strictEqual(viewer.$(".o_image_caption:contains('urlYoutubeName')").length, 1,
+ assert.strictEqual(viewer.$(".o_image_caption:contains('urlYoutube')").length, 1,
"the viewer should be on the right attachment");
assert.containsOnce(viewer, '.o_viewer_text[data-src="' + youtubeURL + '"]',
"there should be a video player");
diff --git a/addons/mail/views/mail_message_views.xml b/addons/mail/views/mail_message_views.xml
index df7643f7f36..b7ae76d8272 100644
--- a/addons/mail/views/mail_message_views.xml
+++ b/addons/mail/views/mail_message_views.xml
@@ -139,7 +139,6 @@
<field name="id"/>
<field name="mimetype"/>
<field name="type"/>
- <field name="datas_fname"/>
<field name="create_uid"/>
<field name="url"/>
<field name="type"/>
@@ -159,13 +158,8 @@
</div>
<div class="o_kanban_details">
<div class="o_kanban_details_wrapper">
- <div t-att-title="record.datas_fname.raw_value" class="o_kanban_record_title">
- <t t-if="record.type.raw_value == 'url'">
- <field name="name" class="o_text_overflow"/>
- </t>
- <t t-else="">
- <field name="datas_fname" class="o_text_overflow"/>
- </t>
+ <div t-att-title="record.name.raw_value" class="o_kanban_record_title">
+ <field name="name" class="o_text_overflow"/>
</div>
<div class="o_kanban_record_body">
<t t-if="record.type.raw_value == 'url'">
diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py
index 1d54406b086..ba65f787257 100644
--- a/addons/mail/wizard/mail_compose_message.py
+++ b/addons/mail/wizard/mail_compose_message.py
@@ -415,7 +415,6 @@ class MailComposer(models.TransientModel):
data_attach = {
'name': attach_fname,
'datas': attach_datas,
- 'datas_fname': attach_fname,
'res_model': 'mail.compose.message',
'res_id': 0,
'type': 'binary', # override default_type from context, possibly meant for another model!