summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorThanh Dodeur <tso@odoo.com>2018-12-12 10:50:54 +0000
committerThanh Dodeur <tso@odoo.com>2018-12-12 14:05:48 +0000
commitd3b8422c9c44557256836bdc0da5480f553eec4d (patch)
tree97be018d6546e14341e2c91e9d34dda30e862265 /addons
parent1599d0bc42d1cc4057e5e9b01e1dd924da4ae566 (diff)
[FIX] document_indexation: removes the attachment sidebar button
This commit removes the attachment button from the sidebar. Reason: following the introduction of the attachment button in the chatter (7f97c9fc056a0949c61c8444ee20f4c95bb3e9a9) and the partial removal of this feature (1dbb555aab8910d1739783c39fd502c4a2e145d0) in V12.0, it has been decided that the chatter button will completely replace this feature. closes odoo/odoo#29468
Diffstat (limited to 'addons')
-rw-r--r--addons/attachment_indexation/__manifest__.py3
-rw-r--r--addons/attachment_indexation/static/src/js/attachment_indexation.js200
-rw-r--r--addons/attachment_indexation/static/tests/attachment_indexation_tests.js112
-rw-r--r--addons/attachment_indexation/views/attachment_indexation_templates.xml14
-rw-r--r--addons/web/static/tests/views/form_tests.js45
5 files changed, 0 insertions, 374 deletions
diff --git a/addons/attachment_indexation/__manifest__.py b/addons/attachment_indexation/__manifest__.py
index 2e0295018d5..9c1cb4baf14 100644
--- a/addons/attachment_indexation/__manifest__.py
+++ b/addons/attachment_indexation/__manifest__.py
@@ -11,8 +11,5 @@ Attachments list and document indexation
* Document Indexation: odt
""",
'depends': ['web'],
- 'data': [
- 'views/attachment_indexation_templates.xml',
- ],
'installable': True,
}
diff --git a/addons/attachment_indexation/static/src/js/attachment_indexation.js b/addons/attachment_indexation/static/src/js/attachment_indexation.js
deleted file mode 100644
index 05e3a4fbb5a..00000000000
--- a/addons/attachment_indexation/static/src/js/attachment_indexation.js
+++ /dev/null
@@ -1,200 +0,0 @@
-odoo.define('attachment_indexation.document', function (require) {
-"use strict";
-
-var core = require('web.core');
-var Dialog = require('web.Dialog');
-var framework = require('web.framework');
-var Sidebar = require('web.Sidebar');
-var field_utils = require('web.field_utils');
-
-var _t = core._t;
-
-Sidebar.include({
- /**
- * @override
- */
- init : function (parent, options) {
- this._super.apply(this, arguments);
- this.hasAttachments = options.viewType === "form";
- if (this.hasAttachments) {
- this.sections.splice(1, 0, { 'name' : 'files', 'label' : _t('Attachment(s)'), });
- this.items.files = [];
- this.fileuploadId = _.uniqueId('oe_fileupload');
- $(window).on(this.fileuploadId, this._onFileUploaded.bind(this));
- }
- },
- /**
- * Get the attachment linked to the record when the toolbar started
- *
- * @override
- */
- start: function () {
- var _super = this._super.bind(this);
- var def = this.hasAttachments ? this._updateAttachments() : $.when();
- return def.then(_super);
- },
- /**
- * @override
- */
- destroy: function () {
- if (this.hasAttachments) {
- $(window).off(this.fileuploadId);
- }
- this._super.apply(this, arguments);
- },
-
- //--------------------------------------------------------------------------
- // Public
- //--------------------------------------------------------------------------
- /**
- * @override
- */
- updateEnv: function (env) {
- this.env = env;
- var _super = _.bind(this._super, this, env);
- var def = this.hasAttachments ? this._updateAttachments() : $.when();
- def.then(_super);
- },
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * Process the attachments then rerender the toolbar
- *
- * @private
- * @param {Object} attachments
- */
- _processAttachments: function (attachments) {
- //to display number in name if more then one attachment which has same name.
- var self = this;
- _.chain(attachments)
- .groupBy(function (attachment) { return attachment.name; })
- .each(function (attachment) {
- if (attachment.length > 1) {
- _.map(attachment, function (attachment, i) {
- attachment.name = _.str.sprintf(_t("%s (%s)"), attachment.name, i+1);
- });
- }
- });
- _.each(attachments,function (a) {
- a.label = a.name;
- if (a.type === "binary") {
- a.url = '/web/content/' + a.id + '?download=true';
- }
- a.create_date = field_utils.parse.datetime(a.create_date, 'create_date', {isUTC: true});
- a.create_date_string = field_utils.format.datetime(a.create_date, 'create_date', self.env.context.params);
- a.write_date = field_utils.parse.datetime(a.write_date, 'write_date', {isUTC: true});
- a.write_date_string = field_utils.format.datetime(a.write_date, 'write_date', self.env.context.params);
- });
- this.items.files = attachments;
- },
- /**
- * @private
- * @override
- */
- _redraw: function () {
- this._super.apply(this, arguments);
- if (this.hasAttachments) {
- this.$('.o_sidebar_add_attachment .o_form_binary_form')
- .change(this._onAddAttachment.bind(this));
- this.$('.o_sidebar_delete_attachment')
- .click(this._onDeleteAttachment.bind(this));
- }
- },
- /**
- * Update the attachments to be displayed in the attachment section
- * of the toolbar
- *
- * @private
- */
- _updateAttachments: function () {
- if (this.items.files === undefined) {
- return $.when();
- }
- var activeId = this.env.activeIds[0];
- if (!activeId) {
- this.items.files = [];
- return $.when();
- } else {
- var domain = [
- ['res_model', '=', this.env.model],
- ['res_id', '=', activeId],
- ['type', 'in', ['binary', 'url']]
- ];
- var fields = ['name', 'url', 'type',
- 'create_uid', 'create_date', 'write_uid', 'write_date'];
- return this._rpc({
- model: 'ir.attachment',
- method: 'search_read',
- context: this.env.context,
- domain: domain,
- fields: fields,
- }).then(this._processAttachments.bind(this));
- }
- },
-
- //--------------------------------------------------------------------------
- // Handlers
- //--------------------------------------------------------------------------
-
- /**
- * Method triggered when user click on 'add attachment' and select a file
- *
- * @private
- * @param {Event} event
- */
- _onAddAttachment: function (event) {
- var $event = $(event.target);
- if ($event.val() !== '') {
- var $binaryForm = this.$('form.o_form_binary_form');
- $binaryForm.submit();
- $binaryForm.find('input[type=file]').prop('disabled', true);
- $binaryForm.find('button').prop('disabled', true).find('img, span').toggle();
- this.$('.o_sidebar_add_attachment a').text(_t('Uploading...'));
- framework.blockUI();
- }
- },
- /**
- * Method triggered when user delete an attachment
- *
- * @private
- * @param {Event} event
- */
- _onDeleteAttachment: function (event) {
- event.preventDefault();
- var self = this;
- var $event = $(event.currentTarget);
- var options = {
- confirm_callback: function () {
- self._rpc({
- model: 'ir.attachment',
- method: 'unlink',
- args: [parseInt($event.attr('data-id'), 10)],
- })
- .then(self._updateAttachments.bind(self))
- .then(self._redraw.bind(self));
- }
- };
- Dialog.confirm(this, _t("Do you really want to delete this attachment ?"), options);
- },
- /**
- * Handler called when the upload is done
- *
- * @private
- */
- _onFileUploaded: function () {
- var attachments = Array.prototype.slice.call(arguments, 1);
- var uploadErrors = _.filter(attachments, function (attachment) {
- return attachment.error;
- });
- if (uploadErrors.length) {
- this.do_warn(_t('Uploading Error'), uploadErrors[0].error);
- }
- this._updateAttachments().then(this._redraw.bind(this));
- framework.unblockUI();
- }
-});
-
-});
diff --git a/addons/attachment_indexation/static/tests/attachment_indexation_tests.js b/addons/attachment_indexation/static/tests/attachment_indexation_tests.js
deleted file mode 100644
index ee3f4c414a2..00000000000
--- a/addons/attachment_indexation/static/tests/attachment_indexation_tests.js
+++ /dev/null
@@ -1,112 +0,0 @@
-odoo.define('attachment_indexation.tests', function (require) {
- "use strict";
-
- var testUtils = require('web.test_utils');
- var FormView = require('web.FormView');
- var ListView = require('web.ListView');
-
- var createView = testUtils.createView;
-
- QUnit.module('AttachmentIndexationTest', {
- beforeEach: function () {
- this.data = {
- partner: {
- fields: {
- display_name: { string: "Displayed name", type: "char" }
- },
- records: [{
- id: 1,
- display_name: "first record",
- }, {
- id: 2,
- display_name: "second record",
- }]
- },
- 'ir.attachment': {
- fields: {
- type: { string: "Type", type: "char" },
- name: {string: "Name", type: "char"},
- res_id: {string: "ResId", type: "integer"},
- res_model: {string: "ResModel", type: "char"}
- },
- records: [{
- id: 1,
- type:"binary",
- name: "attachment1",
- res_id: 1,
- res_model: 'partner'
- },{
- id: 2,
- type:"binary",
- name: "attachment2",
- res_id: 1,
- res_model: 'partner'
- }]
- }
- };
- }
- }, function () {
- QUnit.module('DocView');
- QUnit.test('AttachmentIndexationAttachmentTest', function (assert) {
- assert.expect(3);
-
- var form = createView({
- View: FormView,
- model: 'partner',
- data: this.data,
- arch: '<form string="Partners">' +
- '<sheet>' +
- '<field name="display_name"/>' +
- '</sheet>' +
- '</form>',
- res_id: 1,
- viewOptions: {hasSidebar: true},
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when(this.data['ir.attachment'].records);
- }
- if (route === '/web/dataset/call_kw/ir.attachment/unlink') {
- assert.strictEqual(args.args[0], 1, "Should have correct id of the attachment to be deleted");
- }
- return this._super.apply(this, arguments);
- }
- });
-
- assert.containsN(form.sidebar, '.o_sidebar_delete_attachment', 2, "there should be two attachments");
- testUtils.dom.click(form.sidebar.$('.o_dropdown_toggler_btn:contains("Attachment")'));
- testUtils.dom.click(form.sidebar.$('.o_sidebar_delete_attachment:eq(0)'));
- testUtils.dom.click($('.modal-footer .btn-primary'));
- assert.containsOnce(form.sidebar, '.o_sidebar_delete_attachment', "there should be only one attachment");
- form.destroy();
- });
-
- QUnit.test('no attachment on list view', function (assert) {
- assert.expect(4);
-
- var list = createView({
- View: ListView,
- model: 'partner',
- data: this.data,
- groupBy: ['display_name'],
- viewOptions: {sidebar: true},
- arch: '<tree string="Partners">' +
- '<field name="display_name"/>' +
- '</tree>',
- mockRPC: function (route, args) {
- assert.step(args.model);
- return this._super.apply(this, arguments);
- }
- });
-
- // select record then trigger render
- testUtils.dom.click(list.$('.o_group_header:last'));
- testUtils.dom.click(list.$('.o_data_row input'));
- testUtils.dom.click(list.$('.o_group_header:first'));
-
- assert.verifySteps(['partner', 'partner', 'partner'],
- "ir.attachment not called when selecting record in list view");
-
- list.destroy();
- });
- });
-});
diff --git a/addons/attachment_indexation/views/attachment_indexation_templates.xml b/addons/attachment_indexation/views/attachment_indexation_templates.xml
deleted file mode 100644
index bb58e3f0357..00000000000
--- a/addons/attachment_indexation/views/attachment_indexation_templates.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo>
- <template id="assets_backend" name="document assets" inherit_id="web.assets_backend">
- <xpath expr="." position="inside">
- <script type="text/javascript" src="/attachment_indexation/static/src/js/attachment_indexation.js"></script>
- </xpath>
- </template>
-
- <template id="qunit_suite" name="document tests" inherit_id="web.qunit_suite">
- <xpath expr="//script[last()]" position="after">
- <script type="text/javascript" src="/attachment_indexation/static/tests/attachment_indexation_tests.js"/>
- </xpath>
- </template>
-</odoo>
diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js
index f70c21de765..e7d425b997e 100644
--- a/addons/web/static/tests/views/form_tests.js
+++ b/addons/web/static/tests/views/form_tests.js
@@ -1634,12 +1634,6 @@ QUnit.module('Views', {
'</form>',
viewOptions: {hasSidebar: true},
res_id: 1,
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
- return this._super.apply(this, arguments);
- },
});
assert.isVisible(form.sidebar);
@@ -1782,12 +1776,6 @@ QUnit.module('Views', {
'</form>',
res_id: 1,
viewOptions: {hasSidebar: true},
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
- return this._super.apply(this, arguments);
- },
});
assert.strictEqual(form.$('.o_control_panel .breadcrumb').text(), 'first record',
@@ -1822,9 +1810,6 @@ QUnit.module('Views', {
assert.strictEqual(args.kwargs.context.hey, 'hoy',
"should have send the correct context");
}
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
return this._super.apply(this, arguments);
},
});
@@ -1847,12 +1832,6 @@ QUnit.module('Views', {
'</form>',
res_id: 1,
viewOptions: {hasSidebar: true},
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
- return this._super.apply(this, arguments);
- },
});
assert.strictEqual(form.$('.o_control_panel .breadcrumb').text(), 'first record',
@@ -2394,12 +2373,6 @@ QUnit.module('Views', {
arch: '<form string="Partners"><field name="foo"></field></form>',
res_id: 1,
viewOptions: {hasSidebar: true},
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
- return this._super.apply(this, arguments);
- },
});
testUtils.form.clickEdit(form);
testUtils.fields.editInput(form.$('input[name=foo]'), 'tralala');
@@ -2736,12 +2709,6 @@ QUnit.module('Views', {
hasSidebar: true,
},
res_id: 1,
- mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
- return this._super.apply(this, arguments);
- },
});
assert.strictEqual(form.pager.$('.o_pager_value').text(), "1", 'pager value should be 1');
@@ -2781,9 +2748,6 @@ QUnit.module('Views', {
},
res_id: 1,
mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
assert.step(args.method);
return this._super.apply(this, arguments);
}
@@ -4945,9 +4909,6 @@ QUnit.module('Views', {
"the active_ids should be an array with 1 inside.");
return $.when({});
}
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
return this._super.apply(this, arguments);
},
});
@@ -6224,9 +6185,6 @@ QUnit.module('Views', {
res_id: 1,
viewOptions: {hasSidebar: true},
mockRPC: function (route, args) {
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
var result = this._super.apply(this, arguments);
if (args.method === 'copy') {
return result.then(function (id) {
@@ -6878,9 +6836,6 @@ QUnit.module('Views', {
if (args.method === 'unlink') {
assert.step('unlink');
}
- if (args.method === 'search_read' && args.model === 'ir.attachment') {
- return $.when([]);
- }
return this._super.apply(this, arguments);
},
res_id: 1,