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: '
' + - '' + - '' + - '' + - '
', - 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: '' + - '' + - '', - 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 @@ - - - - -