summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorPierre Masereel <pim@odoo.com>2017-04-13 16:38:13 +0200
committerPierre Masereel <pim@odoo.com>2017-04-14 10:50:35 +0200
commitff2ce7524b9305cc2a7f4a73a0abc744f18ec422 (patch)
tree533780e844ddb6db65badb1b2e24f399326fc1f1 /addons/web
parent2f67881d4517b786f08a84242f0dcb3c1c8ece57 (diff)
[FIX] web: archive kanban column
When we try to archive a kanban column we get a traceback when the field 'active' exists on the model but not in the view. This traceback is caused by an unecessary check of the active value of the record. To fix it, we apply the 'active' value on all records, and not only on the ones where active value changed.
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js7
-rw-r--r--addons/web/static/tests/views/kanban_tests.js37
2 files changed, 38 insertions, 6 deletions
diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js
index ab0f4cb6d07..023e013301e 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -182,12 +182,7 @@ var KanbanController = BasicController.extend({
var self = this;
var active_value = !event.data.archive;
var column = event.target;
- var record_ids = [];
- _.each(column.records, function (kanban_record) {
- if (kanban_record.record.active.value !== active_value) {
- record_ids.push(kanban_record.db_id);
- }
- });
+ var record_ids = _.pluck(column.records, 'db_id');
if (record_ids.length) {
this.model
.toggleActive(record_ids, active_value, column.db_id)
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index 951afc8e112..24557f2b96d 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -1119,6 +1119,43 @@ QUnit.module('Views', {
kanban.destroy();
});
+ QUnit.test('archive kanban column, when active field is not in the view', function (assert) {
+ assert.expect(3);
+
+ this.data.partner.fields.active = {string: 'Active', type: 'char', default: true};
+
+ var writeOnActive;
+ var kanban = createView({
+ View: KanbanView,
+ model: 'partner',
+ data: this.data,
+ arch: '<kanban>' +
+ '<field name="product_id"/>' +
+ '<templates><t t-name="kanban-box">' +
+ '<div><field name="foo"/></div>' +
+ '</t></templates>' +
+ '</kanban>',
+ groupBy: ['product_id'],
+ mockRPC: function (route, args) {
+ if (args.method === 'write' && 'active' in args.args[1]) {
+ writeOnActive = true;
+ }
+ return this._super.apply(this, arguments);
+ },
+ });
+
+ var $first_column = kanban.$('.o_kanban_group:first()');
+ assert.strictEqual($first_column.find('.o_kanban_record').length, 2,
+ "there should be 2 partners in first column");
+ $first_column.find('.o_column_archive').click();
+ assert.ok(writeOnActive, "should write on the active field");
+ assert.strictEqual($first_column.find('.o_kanban_record').length, 0,
+ "there should not be partners anymore");
+
+ kanban.destroy();
+
+ });
+
});
});