-
-
-
-
-
-
+
+
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!
diff --git a/addons/mass_mailing/data/mass_mailing_demo.xml b/addons/mass_mailing/data/mass_mailing_demo.xml
index e9df5daaa35..c1fdc2483f2 100644
--- a/addons/mass_mailing/data/mass_mailing_demo.xml
+++ b/addons/mass_mailing/data/mass_mailing_demo.xml
@@ -4,7 +4,6 @@
bWlncmF0aW9uIHRlc3Q=
- SampleDoc.doc
SampleDoc.doc
diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py
index 6d47d33e356..b4cdf4109fc 100644
--- a/addons/mass_mailing/models/mass_mailing.py
+++ b/addons/mass_mailing/models/mass_mailing.py
@@ -704,9 +704,8 @@ class MassMailing(models.Model):
def _image_to_url(b64image: bytes):
"""Store an image in an attachement and returns an url"""
attachment = self.env['ir.attachment'].create({
- 'name': "cropped_image",
'datas': b64image,
- 'datas_fname': "cropped_image_mailing_{}".format(self.id),
+ 'name': "cropped_image_mailing_{}".format(self.id),
'type': 'binary',})
attachment.generate_access_token()
diff --git a/addons/mrp/views/ir_attachment_view.xml b/addons/mrp/views/ir_attachment_view.xml
index d0657d6b28f..415ae3a5233 100644
--- a/addons/mrp/views/ir_attachment_view.xml
+++ b/addons/mrp/views/ir_attachment_view.xml
@@ -9,7 +9,6 @@
-
@@ -30,7 +29,7 @@
-
+
diff --git a/addons/snailmail/models/snailmail_letter.py b/addons/snailmail/models/snailmail_letter.py
index 797bf92a0b0..a0925515a2c 100644
--- a/addons/snailmail/models/snailmail_letter.py
+++ b/addons/snailmail/models/snailmail_letter.py
@@ -37,7 +37,7 @@ class SnailmailLetter(models.Model):
attachment_id = fields.Many2one('ir.attachment', string='Attachment', ondelete='cascade')
attachment_datas = fields.Binary('Document', related='attachment_id.datas')
- attachment_fname = fields.Char('Attachment Filename', related='attachment_id.datas_fname')
+ attachment_fname = fields.Char('Attachment Filename', related='attachment_id.name')
color = fields.Boolean(string='Color', default=lambda self: self.env.company.snailmail_color)
cover = fields.Boolean(string='Cover Page', default=lambda self: self.env.company.snailmail_cover)
duplex = fields.Boolean(string='Both side', default=lambda self: self.env.company.snailmail_duplex)
@@ -125,7 +125,6 @@ class SnailmailLetter(models.Model):
attachment = self.env['ir.attachment'].create({
'name': filename,
'datas': base64.b64encode(pdf_bin),
- 'datas_fname': filename,
'res_model': 'snailmail.letter',
'res_id': self.id,
'type': 'binary', # override default_type from context, possibly meant for another model!
diff --git a/addons/test_mail/tests/test_mail_message.py b/addons/test_mail/tests/test_mail_message.py
index c13fe2626ca..4f777ff8b7e 100644
--- a/addons/test_mail/tests/test_mail_message.py
+++ b/addons/test_mail/tests/test_mail_message.py
@@ -237,8 +237,7 @@ class TestMessageAccess(common.BaseFunctionalTest, common.MockEmails):
def test_mail_message_access_read_notification(self):
attachment = self.env['ir.attachment'].create({
'datas': base64.b64encode(b'My attachment'),
- 'name': 'doc.txt',
- 'datas_fname': 'doc.txt'})
+ 'name': 'doc.txt'})
# attach the attachment to the message
self.message.write({'attachment_ids': [(4, attachment.id)]})
self.message.write({'partner_ids': [(4, self.user_employee.partner_id.id)]})
diff --git a/addons/test_mail/tests/test_mail_template.py b/addons/test_mail/tests/test_mail_template.py
index 86327c174d4..ebff4b24a3a 100644
--- a/addons/test_mail/tests/test_mail_template.py
+++ b/addons/test_mail/tests/test_mail_template.py
@@ -20,14 +20,12 @@ class TestMailTemplate(BaseFunctionalTest, MockEmails, TestRecipients):
})
self._attachments = [{
- 'name': '_Test_First',
- 'datas_fname': 'first.txt',
+ 'name': 'first.txt',
'datas': base64.b64encode(b'My first attachment'),
'res_model': 'res.partner',
'res_id': self.user_admin.partner_id.id
}, {
- 'name': '_Test_Second',
- 'datas_fname': 'second.txt',
+ 'name': 'second.txt',
'datas': base64.b64encode(b'My second attachment'),
'res_model': 'res.partner',
'res_id': self.user_admin.partner_id.id
diff --git a/addons/test_mail/tests/test_message_compose.py b/addons/test_mail/tests/test_message_compose.py
index 32a9a44e3ee..f755213a93f 100644
--- a/addons/test_mail/tests/test_message_compose.py
+++ b/addons/test_mail/tests/test_message_compose.py
@@ -86,11 +86,11 @@ class TestMessagePost(BaseFunctionalTest, MockEmails, TestRecipients):
('List2', b'My second attachment')
]
_attach_1 = self.env['ir.attachment'].sudo(self.user_employee).create({
- 'name': 'Attach1', 'datas_fname': 'Attach1',
+ 'name': 'Attach1',
'datas': 'bWlncmF0aW9uIHRlc3Q=',
'res_model': 'mail.compose.message', 'res_id': 0})
_attach_2 = self.env['ir.attachment'].sudo(self.user_employee).create({
- 'name': 'Attach2', 'datas_fname': 'Attach2',
+ 'name': 'Attach2',
'datas': 'bWlncmF0aW9uIHRlc3Q=',
'res_model': 'mail.compose.message', 'res_id': 0})
diff --git a/addons/test_mail/tests/test_odoobot.py b/addons/test_mail/tests/test_odoobot.py
index 900e7b62689..76a45eb73f7 100644
--- a/addons/test_mail/tests/test_odoobot.py
+++ b/addons/test_mail/tests/test_odoobot.py
@@ -63,7 +63,6 @@ class TestOdoobot(BaseFunctionalTest, MockEmails, TestRecipients):
kwargs['body'] = ''
attachment = self.env['ir.attachment'].sudo(self.user_employee).create({
'datas': 'bWlncmF0aW9uIHRlc3Q=',
- 'datas_fname': 'catalog.doc',
'name': 'picture_of_your_dog.doc',
})
kwargs['attachment_ids'] = [attachment.id]
diff --git a/addons/test_mail/tests/test_performance.py b/addons/test_mail/tests/test_performance.py
index cb2300a6df3..de2e4321cc9 100644
--- a/addons/test_mail/tests/test_performance.py
+++ b/addons/test_mail/tests/test_performance.py
@@ -728,8 +728,7 @@ class TestMailPerformancePost(TransactionCase):
})
self.vals = [{
'datas': base64.b64encode(bytes("attachement content %s" % i, 'utf-8')),
- 'name': 'attach %s' % i,
- 'datas_fname': 'fileText_test%s.txt' % i,
+ 'name': 'fileText_test%s.txt' % i,
'mimetype': 'text/plain',
'res_model': 'mail.compose.message',
'res_id': 0,
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index 1b16c64cd4d..fe4ded3bb71 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -1009,7 +1009,7 @@ class Binary(http.Controller):
'/web/content///',
'/web/content////'], type='http', auth="public")
def content_common(self, xmlid=None, model='ir.attachment', id=None, field='datas',
- filename=None, filename_field='datas_fname', unique=None, mimetype=None,
+ filename=None, filename_field='name', unique=None, mimetype=None,
download=None, data=None, token=None, access_token=None, **kw):
status, headers, content = request.env['ir.http'].binary_content(
@@ -1053,7 +1053,7 @@ class Binary(http.Controller):
'/web/image/-/x',
'/web/image/-/x/'], type='http', auth="public")
def content_image(self, xmlid=None, model='ir.attachment', id=None, field='datas',
- filename_field='datas_fname', unique=None, filename=None, mimetype=None,
+ filename_field='name', unique=None, filename=None, mimetype=None,
download=None, width=0, height=0, crop=False, access_token=None,
**kwargs):
# other kwargs are ignored on purpose
@@ -1063,7 +1063,7 @@ class Binary(http.Controller):
quality=int(kwargs.get('quality', 0)), access_token=access_token)
def _content_image(self, xmlid=None, model='ir.attachment', id=None, field='datas',
- filename_field='datas_fname', unique=None, filename=None, mimetype=None,
+ filename_field='name', unique=None, filename=None, mimetype=None,
download=None, width=0, height=0, crop=False, quality=0, access_token=None,
placeholder='placeholder.png', **kwargs):
status, headers, image_base64 = request.env['ir.http'].binary_content(
@@ -1134,7 +1134,6 @@ class Binary(http.Controller):
attachment = Model.create({
'name': filename,
'datas': base64.encodestring(ufile.read()),
- 'datas_fname': filename,
'res_model': model,
'res_id': int(id)
})
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 398928f585b..325bb176e61 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -1803,7 +1803,6 @@ var FieldMany2ManyBinaryMultiFiles = AbstractField.extend({
supportedFieldTypes: ['many2many'],
fieldsToFetch: {
name: {type: 'char'},
- datas_fname: {type: 'char'},
mimetype: {type: 'char'},
},
events: {
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index aec23c150bc..b5e098d230c 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -2247,7 +2247,7 @@ QUnit.module('relational_fields', {
mockRPC: function (route, args) {
assert.step(route);
if (route === '/web/dataset/call_kw/ir.attachment/read') {
- assert.deepEqual(args.args[1], ['name', 'datas_fname', 'mimetype']);
+ assert.deepEqual(args.args[1], ['name', 'mimetype']);
}
return this._super.apply(this, arguments);
},
diff --git a/addons/web_editor/models/assets.py b/addons/web_editor/models/assets.py
index 72b1b557e90..4178335624c 100644
--- a/addons/web_editor/models/assets.py
+++ b/addons/web_editor/models/assets.py
@@ -173,11 +173,10 @@ class Assets(models.AbstractModel):
# If not, create a new attachment to copy the original scss/js file
# content, with its modifications
new_attach = {
- 'name': custom_url,
+ 'name': url.split("/")[-1],
'type': "binary",
'mimetype': (file_type == 'js' and 'text/javascript' or 'text/scss'),
'datas': datas,
- 'datas_fname': url.split("/")[-1],
'url': custom_url,
}
new_attach.update(self._save_asset_attachment_hook())
diff --git a/addons/web_editor/static/src/js/wysiwyg/plugin/media.js b/addons/web_editor/static/src/js/wysiwyg/plugin/media.js
index 8ff6a100627..b11c15b2564 100644
--- a/addons/web_editor/static/src/js/wysiwyg/plugin/media.js
+++ b/addons/web_editor/static/src/js/wysiwyg/plugin/media.js
@@ -800,7 +800,6 @@ var ImagePlugin = AbstractMediaPlugin.extend({
res_model: resModel,
res_id: resID,
name: name,
- datas_fname: name,
datas: datas,
mimetype: mimetype,
url: originalSrc, // To save the original image that was cropped
diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js b/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
index 3303ec0a58f..545f06a38e2 100644
--- a/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
+++ b/addons/web_editor/static/src/js/wysiwyg/widgets/media.js
@@ -233,13 +233,13 @@ var FileWidget = SearchableMediaWidget.extend({
.sortBy(function (r) {
if (_.any(self.options.firstFilters, function (filter) {
var regex = new RegExp(filter, 'i');
- return r.name.match(regex) || r.name && r.name.match(regex);
+ return r.name && r.name.match(regex);
})) {
return -1;
}
if (_.any(self.options.lastFilters, function (filter) {
var regex = new RegExp(filter, 'i');
- return r.name.match(regex) || r.name && r.name.match(regex);
+ return r.name && r.name.match(regex);
})) {
return 1;
}
@@ -323,9 +323,9 @@ var FileWidget = SearchableMediaWidget.extend({
domain = ['|', ['public', '=', true]].concat(domain);
domain = domain.concat(this.options.mimetypeDomain);
if (needle && needle.length) {
- domain.push('|', ['name', 'ilike', needle], ['name', 'ilike', needle]);
+ domain.push(['name', 'ilike', needle]);
}
- domain.push('|', ['name', '=', false], '!', ['name', '=like', '%.crop'], '!', ['name', '=like', '%.crop']);
+ domain.push('!', ['name', '=like', '%.crop']);
domain.push('|', ['type', '=', 'binary'], ['url', '!=', false]);
return domain;
},
diff --git a/addons/web_editor/static/tests/test_utils.js b/addons/web_editor/static/tests/test_utils.js
index 0501baee4ea..99510bb3bae 100644
--- a/addons/web_editor/static/tests/test_utils.js
+++ b/addons/web_editor/static/tests/test_utils.js
@@ -319,10 +319,6 @@ function wysiwygData(data) {
string: "display_name",
type: 'char',
},
- datas_fname: {
- string: "datas_fname",
- type: 'char',
- },
mimetype: {
string: "mimetype",
type: 'char',
@@ -371,7 +367,6 @@ function wysiwygData(data) {
records: [{
id: 1,
name: 'image',
- datas_fname: 'image.png',
mimetype: 'image/png',
checksum: false,
url: '/web_editor/static/src/img/transparent.png',
diff --git a/addons/web_unsplash/controllers/main.py b/addons/web_unsplash/controllers/main.py
index 98b3cec976e..f3a1c91dab9 100644
--- a/addons/web_unsplash/controllers/main.py
+++ b/addons/web_unsplash/controllers/main.py
@@ -106,9 +106,8 @@ class Web_Unsplash(http.Controller):
url_frags = ['unsplash', key, query]
attachment = Attachments.create({
- 'name': query,
+ 'name': '_'.join(url_frags),
'url': '/' + '/'.join(url_frags),
- 'datas_fname': '_'.join(url_frags),
'mimetype': mimetype,
'datas': image_base64,
'public': res_model == 'ir.ui.view',
diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml
index 737ff819de8..1d50c7bf704 100644
--- a/addons/website/data/website_data.xml
+++ b/addons/website/data/website_data.xml
@@ -173,136 +173,119 @@
- business_conference
- business_conference.jpg
+ business_conference.jpg
ir.ui.view
binary
- Website Library Image 01
- bridge.jpg
+ bridge.jpg
ir.ui.view
url
/website/static/src/img/library/bridge.jpg
- Website Library Image 02
- deliver.jpg
+ deliver.jpg
ir.ui.view
url
/website/static/src/img/library/deliver.jpg
- Website Library Image 03
- clock.jpg
+ clock.jpg
ir.ui.view
url
/website/static/src/img/library/clock.jpg
- Website Library Image 04
- manufacturing.jpg
+ manufacturing.jpg
ir.ui.view
url
/website/static/src/img/library/manufacturing.jpg
- Website Library Image 05
- compass.jpg
+ compass.jpg
ir.ui.view
url
/website/static/src/img/library/compass.jpg
- Website Library Image 06
- gift.jpg
+ gift.jpg
ir.ui.view
url
/website/static/src/img/library/gift.jpg
- Website Library Image 07
- mobile_device.jpg
+ mobile_device.jpg
ir.ui.view
url
/website/static/src/img/library/mobile_device.jpg
- Website Library Image 08
- mobile.jpg
+ mobile.jpg
ir.ui.view
url
/website/static/src/img/library/mobile.jpg
- Website Library Image 09
- office.jpg
+ office.jpg
ir.ui.view
url
/website/static/src/img/library/office.jpg
- Website Library Image 10
- ice_coffe.jpg
+ ice_coffe.jpg
ir.ui.view
url
/website/static/src/img/library/ice_coffe.jpg
- Website Library Image 11
- rocket.jpg
+ rocket.jpg
ir.ui.view
url
/website/static/src/img/library/rocket.jpg
- Website Library Image 12
- sell.jpg
+ sell.jpg
ir.ui.view
url
/website/static/src/img/library/sell.jpg
- Website Library Image 13
- shop.jpg
+ shop.jpg
ir.ui.view
url
/website/static/src/img/library/shop.jpg
- Website Library Image 14
- sign.jpg
+ sign.jpg
ir.ui.view
url
/website/static/src/img/library/sign.jpg
- Website Library Image 15
- sweet.jpg
+ sweet.jpg
ir.ui.view
url
/website/static/src/img/library/sweet.jpg
- Website Library Image 16
- wine.jpg
+ wine.jpg
ir.ui.view
url
/website/static/src/img/library/wine.jpg
@@ -311,72 +294,63 @@
- Website Background Image 01
- s_background_image_01.jpg
+ s_background_image_01.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/peak.jpg
- Website Background Image 02
- s_background_image_02.jpg
+ s_background_image_02.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/la.jpg
- Website Background Image 03
- s_background_image_03.jpg
+ s_background_image_03.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/panama-sky.jpg
- Website Background Image 04
- s_background_image_04.jpg
+ s_background_image_04.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/cubes.jpg
- Website Background Image 05
- s_background_image_05.jpg
+ s_background_image_05.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/building-profile.jpg
- Website Background Image 06
- s_background_image_06.jpg
+ s_background_image_06.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/type.jpg
- Website Background Image 07
- s_background_image_07.jpg
+ s_background_image_07.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/people.jpg
- Website Background Image 08
- s_background_image_08.jpg
+ s_background_image_08.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/city.jpg
- Website Background Image 09
- s_background_image_09.jpg
+ s_background_image_09.jpg
url
ir.ui.view
/website/static/src/img/backgrounds/sails.jpg
@@ -385,162 +359,139 @@
- Cover Snippet - Default Image
- s_cover_default_image.jpg
+ s_cover_default_image.jpg
url
/website/static/src/img/snippets_demo/s_cover.jpg
- Quotes Carousel Snippet - Demo Image 1
- s_quotes_carousel_image_01.jpg
+ s_quotes_carousel_image_01.jpg
url
/website/static/src/img/snippets_demo/s_quotes_carousel_1.jpg
- Quotes Carousel Snippet - Demo Image 2
- s_quotes_carousel_image_02.jpg
+ s_quotes_carousel_image_02.jpg
url
/website/static/src/img/snippets_demo/s_quotes_carousel_2.jpg
- Quotes Carousel Snippet - Demo Image 3
- s_quotes_carousel_image_3.png
+ s_quotes_carousel_image_3.png
url
/website/static/src/img/snippets_demo/s_team_member_3.png
- Quotes Carousel Snippet - Demo Image 4
- s_quotes_carousel_image_4.png
+ s_quotes_carousel_image_4.png
url
/website/static/src/img/snippets_demo/s_team_member_2.png
- Quotes Carousel Snippet - Demo Image 5
- s_quotes_carousel_image_5.png
+ s_quotes_carousel_image_5.png
url
/website/static/src/img/snippets_demo/s_team_member_4.png
- Image Text Snippet - Default Image
- s_image_text_default_image.jpg
+ s_image_text_default_image.jpg
url
/website/static/src/img/snippets_demo/s_image_text.jpg
- Text Image Snippet - Default Image
- s_text_image_default_image.jpg
+ s_text_image_default_image.jpg
url
/website/static/src/img/snippets_demo/s_text_image.jpg
- Carousel Snippet - Default Image 1
- s_carousel_default_image_1.jpg
+ s_carousel_default_image_1.jpg
url
/website/static/src/img/snippets_demo/s_carousel_1.jpg
- Carousel Snippet - Default Image 2
- s_carousel_default_image_2.jpg
+ s_carousel_default_image_2.jpg
url
/website/static/src/img/snippets_demo/s_carousel_2.jpg
- Carousel Snippet - Default Image 3
- s_carousel_default_image_3.jpg
+ s_carousel_default_image_3.jpg
url
/website/static/src/img/snippets_demo/s_carousel_3.jpg
- Picture Snippet - Default Image
- s_picture_default_image.jpg
+ s_picture_default_image.jpg
url
/website/static/src/img/snippets_demo/s_picture.jpg
- Banner Snippet - Default Image
- s_banner_default_image.jpg
+ s_banner_default_image.jpg
url
/website/static/src/img/snippets_demo/s_banner.jpg
- Parallax Snippet - Default Image
- s_parallax_default_image.jpg
+ s_parallax_default_image.jpg
url
/website/static/src/img/snippets_demo/s_parallax.jpg
- Reference Snippet - Demo Image 1
- s_reference_demo_image_1.png
+ s_reference_demo_image_1.png
url
/website/static/src/img/snippets_demo/s_references_1.png
- Reference Snippet - Demo Image 2
- s_reference_demo_image_2.png
+ s_reference_demo_image_2.png
url
/website/static/src/img/snippets_demo/s_references_2.png
- Reference Snippet - Demo Image 3
- s_reference_demo_image_3.png
+ s_reference_demo_image_3.png
url
/website/static/src/img/snippets_demo/s_references_3.png
- Reference Snippet - Demo Image 4
- s_reference_demo_image_4.png
+ s_reference_demo_image_4.png
url
/website/static/src/img/snippets_demo/s_references_4.png
- Reference Snippet - Demo Image 5
- s_reference_demo_image_5.png
+ s_reference_demo_image_5.png
url
/website/static/src/img/snippets_demo/s_references_5.png
- Company Team Snippet - Image 1
- s_company_team_image_1.png
+ s_company_team_image_1.png
url
/website/static/src/img/snippets_demo/s_team_member_1.png
- Company Team Snippet - Image 2
- s_company_team_image_2.png
+ s_company_team_image_2.png
url
/website/static/src/img/snippets_demo/s_team_member_2.png
- Company Team Snippet - Image 3
- s_company_team_image_3.png
+ s_company_team_image_3.png
url
/website/static/src/img/snippets_demo/s_team_member_3.png
- Company Team Snippet - Image 4
- s_company_team_image_4.png
+ s_company_team_image_4.png
url
/website/static/src/img/snippets_demo/s_team_member_4.png
diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py
index 22f2dce7c4a..e6eb9c10fa9 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -287,7 +287,7 @@ class Http(models.AbstractModel):
return werkzeug.wrappers.Response(html, status=code, content_type='text/html;charset=utf-8')
def binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas',
- unique=False, filename=None, filename_field='datas_fname', download=False,
+ unique=False, filename=None, filename_field='name', download=False,
mimetype=None, default_mimetype='application/octet-stream',
access_token=None):
obj = None
diff --git a/addons/website/static/src/js/editor/wysiwyg_multizone.js b/addons/website/static/src/js/editor/wysiwyg_multizone.js
index 4509816c30e..201cbd64d21 100644
--- a/addons/website/static/src/js/editor/wysiwyg_multizone.js
+++ b/addons/website/static/src/js/editor/wysiwyg_multizone.js
@@ -434,7 +434,6 @@ var WysiwygMultizone = Wysiwyg.extend({
res_model: resModel,
res_id: resID,
name: name,
- datas_fname: name,
datas: datas,
mimetype: mimetype,
url: originalSrc, // To save the original image that was cropped
diff --git a/addons/website/views/ir_attachment_views.xml b/addons/website/views/ir_attachment_views.xml
index 19db9f670e8..f2ba6fccdc4 100644
--- a/addons/website/views/ir_attachment_views.xml
+++ b/addons/website/views/ir_attachment_views.xml
@@ -15,7 +15,7 @@
ir.attachment
-
+
diff --git a/addons/website_blog/data/website_blog_data.xml b/addons/website_blog/data/website_blog_data.xml
index 3438ae7a870..169cbc67ac7 100644
--- a/addons/website_blog/data/website_blog_data.xml
+++ b/addons/website_blog/data/website_blog_data.xml
@@ -17,7 +17,6 @@
Blog Post Cover 1
- Blog Post Cover 1
ir.ui.view
url
/website_blog/static/src/img/demo/blog_post_cover_1.jpg
@@ -26,7 +25,6 @@
Blog Post Cover 2
- Blog Post Cover 2
ir.ui.view
url
/website_blog/static/src/img/demo/blog_post_cover_2.jpg
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py
index fc9c326eb07..1785766def7 100644
--- a/addons/website_form/controllers/main.py
+++ b/addons/website_form/controllers/main.py
@@ -213,7 +213,6 @@ class WebsiteForm(http.Controller):
attachment_value = {
'name': file.filename,
'datas': base64.encodestring(file.read()),
- 'datas_fname': file.filename,
'res_model': model_name,
'res_id': record.id,
}
diff --git a/addons/website_sale_digital/data/product_demo.xml b/addons/website_sale_digital/data/product_demo.xml
index b7497e04063..2388f15a023 100644
--- a/addons/website_sale_digital/data/product_demo.xml
+++ b/addons/website_sale_digital/data/product_demo.xml
@@ -13,7 +13,6 @@
ebook.pdf
- ebook.pdf
binary
diff --git a/addons/website_theme_install/models/ir_module_module.py b/addons/website_theme_install/models/ir_module_module.py
index e1b7489f7c5..e7e31e176f2 100644
--- a/addons/website_theme_install/models/ir_module_module.py
+++ b/addons/website_theme_install/models/ir_module_module.py
@@ -419,7 +419,6 @@ class IrModuleModule(models.Model):
IrAttachment.create({
'type': 'url',
'name': image_name,
- 'datas_fname': image_name,
'url': image_path,
'res_model': self._name,
'res_id': app.id,
diff --git a/addons/website_theme_install/models/theme_models.py b/addons/website_theme_install/models/theme_models.py
index d36bee8a53a..b9b2f006c94 100644
--- a/addons/website_theme_install/models/theme_models.py
+++ b/addons/website_theme_install/models/theme_models.py
@@ -69,7 +69,6 @@ class ThemeAttachment(models.Model):
url = fields.Char()
copy_ids = fields.One2many('ir.attachment', 'theme_template_id', 'Attachment using a copy of me', copy=False, readonly=True)
- # TODO in master: add missing field: datas_fname
@api.multi
def _convert_to_base_model(self, website, **kwargs):
diff --git a/odoo/addons/base/models/assetsbundle.py b/odoo/addons/base/models/assetsbundle.py
index 04e85944c0e..4afc9a76a56 100644
--- a/odoo/addons/base/models/assetsbundle.py
+++ b/odoo/addons/base/models/assetsbundle.py
@@ -262,8 +262,8 @@ class AssetsBundle(object):
FROM ir_attachment
WHERE create_uid = %s
AND url like %s
- GROUP BY datas_fname
- ORDER BY datas_fname
+ GROUP BY name
+ ORDER BY name
""", [SUPERUSER_ID, url_pattern])
attachment_ids = [r[0] for r in self.env.cr.fetchall()]
return self.env['ir.attachment'].sudo().browse(attachment_ids)
@@ -279,8 +279,7 @@ class AssetsBundle(object):
fname = '%s.%s' % (self.name, type)
mimetype = 'application/javascript' if type == 'js' else 'text/css'
values = {
- 'name': "/web/content/%s" % type,
- 'datas_fname': fname,
+ 'name': fname,
'mimetype': mimetype,
'res_model': 'ir.ui.view',
'res_id': False,
@@ -299,7 +298,6 @@ class AssetsBundle(object):
type=''
)
values = {
- 'name': url,
'url': url,
}
attachment.write(values)
@@ -448,9 +446,8 @@ class AssetsBundle(object):
datas=base64.b64encode(asset.content.encode('utf8')),
mimetype='text/css',
type='binary',
- name=url,
+ name=fname,
url=url,
- datas_fname=fname,
res_model=False,
res_id=False,
))
diff --git a/odoo/addons/base/models/ir_actions_report.py b/odoo/addons/base/models/ir_actions_report.py
index 0d78ca6cb97..5c4b773d164 100644
--- a/odoo/addons/base/models/ir_actions_report.py
+++ b/odoo/addons/base/models/ir_actions_report.py
@@ -154,7 +154,7 @@ class IrActionsReport(models.Model):
if not attachment_name:
return None
return self.env['ir.attachment'].search([
- ('datas_fname', '=', attachment_name),
+ ('name', '=', attachment_name),
('res_model', '=', self.model),
('res_id', '=', record.id)
], limit=1)
@@ -175,7 +175,6 @@ class IrActionsReport(models.Model):
attachment_vals = {
'name': attachment_name,
'datas': base64.encodestring(buffer.getvalue()),
- 'datas_fname': attachment_name,
'res_model': self.model,
'res_id': record.id,
}
diff --git a/odoo/addons/base/models/ir_attachment.py b/odoo/addons/base/models/ir_attachment.py
index ce98ee7c296..3b314c7d849 100644
--- a/odoo/addons/base/models/ir_attachment.py
+++ b/odoo/addons/base/models/ir_attachment.py
@@ -201,7 +201,7 @@ class IrAttachment(models.Model):
vals = {
'file_size': len(bin_data),
'checksum': self._compute_checksum(bin_data),
- 'index_content': self._index(bin_data, attach.datas_fname, attach.mimetype),
+ 'index_content': self._index(bin_data, attach.mimetype),
'store_fname': False,
'db_datas': value,
}
@@ -232,8 +232,8 @@ class IrAttachment(models.Model):
mimetype = None
if values.get('mimetype'):
mimetype = values['mimetype']
- if not mimetype and values.get('datas_fname'):
- mimetype = mimetypes.guess_type(values['datas_fname'])[0]
+ if not mimetype and values.get('name'):
+ mimetype = mimetypes.guess_type(values['name'])[0]
if not mimetype and values.get('url'):
mimetype = mimetypes.guess_type(values['url'])[0]
if values.get('datas') and (not mimetype or mimetype == 'application/octet-stream'):
@@ -251,8 +251,8 @@ class IrAttachment(models.Model):
return values
@api.model
- def _index(self, bin_data, datas_fname, file_type):
- """ compute the index content of the given filename, or binary data.
+ def _index(self, bin_data, file_type):
+ """ compute the index content of the given binary data.
This is a python implementation of the unix command 'strings'.
:param bin_data : datas in binary form
:return index_content : string containing all the printable character of the binary data
@@ -275,7 +275,6 @@ class IrAttachment(models.Model):
return ['base.group_system']
name = fields.Char('Name', required=True)
- datas_fname = fields.Char('Filename')
description = fields.Text('Description')
res_name = fields.Char('Resource Name', compute='_compute_res_name', store=True)
res_model = fields.Char('Resource Model', readonly=True, help="The database object this attachment will be attached to.")
@@ -374,7 +373,7 @@ class IrAttachment(models.Model):
raise AccessError(_("Sorry, you are not allowed to access this document."))
def _read_group_allowed_fields(self):
- return ['type', 'company_id', 'res_id', 'create_date', 'create_uid', 'res_name', 'name', 'mimetype', 'id', 'url', 'datas_fname', 'res_field', 'res_model']
+ return ['type', 'company_id', 'res_id', 'create_date', 'create_uid', 'res_name', 'name', 'mimetype', 'id', 'url', 'res_field', 'res_model']
@api.model
def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True):
diff --git a/odoo/addons/base/models/ir_http.py b/odoo/addons/base/models/ir_http.py
index ac6ccbc9eac..c69c3c6a12d 100644
--- a/odoo/addons/base/models/ir_http.py
+++ b/odoo/addons/base/models/ir_http.py
@@ -338,7 +338,7 @@ class IrHttp(models.AbstractModel):
def _binary_record_content(
self, record, field='datas', filename=None,
- filename_field='datas_fname', default_mimetype='application/octet-stream'):
+ filename_field='name', default_mimetype='application/octet-stream'):
model = record._name
mimetype = 'mimetype' in record and record.mimetype or False
@@ -387,7 +387,7 @@ class IrHttp(models.AbstractModel):
return (status, headers, content)
def binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas',
- unique=False, filename=None, filename_field='datas_fname', download=False,
+ unique=False, filename=None, filename_field='name', download=False,
mimetype=None, default_mimetype='application/octet-stream',
access_token=None):
""" Get file, attachment or downloadable content
diff --git a/odoo/addons/base/tests/test_ir_http.py b/odoo/addons/base/tests/test_ir_http.py
index 09efa81bd51..a5b0b88a3df 100644
--- a/odoo/addons/base/tests/test_ir_http.py
+++ b/odoo/addons/base/tests/test_ir_http.py
@@ -12,8 +12,7 @@ class test_ir_http_mimetype(common.TransactionCase):
""" Test mimetype for attachment """
attachment = self.env['ir.attachment'].create({
'datas': GIF,
- 'name': 'Test mimetype gif',
- 'datas_fname': 'file.gif'})
+ 'name': 'file.gif'})
status, headers, content = self.env['ir.http'].binary_content(
id=attachment.id,
@@ -27,8 +26,7 @@ class test_ir_http_mimetype(common.TransactionCase):
""" Test mimetype for attachment with bad name"""
attachment = self.env['ir.attachment'].create({
'datas': GIF,
- 'name': 'Test mimetype gif with png name',
- 'datas_fname': 'file.png'})
+ 'name': 'file.png'})
status, headers, content = self.env['ir.http'].binary_content(
id=attachment.id,
@@ -81,8 +79,7 @@ class test_ir_http_mimetype(common.TransactionCase):
public_user = self.env.ref('base.public_user')
attachment = self.env['ir.attachment'].create({
'datas': GIF,
- 'name': 'Test valid access token with image',
- 'datas_fname': 'image.gif'
+ 'name': 'image.gif'
})
defaults = {
diff --git a/odoo/addons/base/views/ir_attachment_views.xml b/odoo/addons/base/views/ir_attachment_views.xml
index 8077b18e335..ff7338c9d1b 100644
--- a/odoo/addons/base/views/ir_attachment_views.xml
+++ b/odoo/addons/base/views/ir_attachment_views.xml
@@ -13,8 +13,7 @@
-
-
+
@@ -49,7 +48,6 @@
-
@@ -64,7 +62,7 @@
ir.attachment
-
+