From 120709f807bef910ecf29d058a603da4dbcd8d82 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Thu, 11 Oct 2018 14:39:43 +0200 Subject: [FIX] web: kanban quick create with correct default values When a kanban view is grouped by a char or a boolean field, and the quick create option is enabled, the correct default value for the grouped field (i.e. the value of the column in which the record is created) should be given (either in the context if that field isn't in the quick create form view, or as a default value in that form view otherwise). Before this rev., it wasn't the case, as it was only working when grouped by a many2one field. Task 1878254 --- addons/web/static/src/js/views/kanban/kanban_column.js | 2 +- addons/web/static/src/js/views/kanban/kanban_controller.js | 6 ++++-- addons/web/static/src/js/views/kanban/kanban_model.js | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'addons/web/static/src/js') diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js index e66601816c2..15f37551188 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column.js +++ b/addons/web/static/src/js/views/kanban/kanban_column.js @@ -194,7 +194,7 @@ var KanbanColumn = Widget.extend({ this.trigger_up('close_quick_create'); // close other quick create widgets this.trigger_up('start_quick_create'); var context = this.data.getContext(); - context['default_' + this.groupedBy] = this.id; + context['default_' + this.groupedBy] = this.grouped_by_m2o ? this.id : this.data.value; this.quickCreateWidget = new RecordQuickCreate(this, { context: context, formViewRef: this.quickCreateView, 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 6f09381313c..025cbc79247 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -388,10 +388,12 @@ var KanbanController = BasicController.extend({ var columnState = self.model.get(column.db_id, {raw: true}); var context = columnState.getContext(); var state = self.model.get(self.handle, {raw: true}); - context['default_' + state.groupedBy[0]] = columnState.res_id; + var groupedBy = state.groupedBy[0]; + var groupedByM2O = state.fields[groupedBy].type === 'many2one'; + context['default_' + groupedBy] = groupedByM2O ? columnState.res_id : columnState.value; new view_dialogs.FormViewDialog(self, { res_model: state.model, - context: _.extend({default_name: name}, context), + context: _.extend({default_name: values.name || values.display_name}, context), title: _t("Create"), disable_multiple_selection: true, on_saved: function (record) { diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js index 0328ff1e0e6..b71a11f08ec 100644 --- a/addons/web/static/src/js/views/kanban/kanban_model.js +++ b/addons/web/static/src/js/views/kanban/kanban_model.js @@ -105,7 +105,8 @@ var KanbanModel = BasicModel.extend({ var group = this.localData[groupID]; var context = this._getContext(group); var parent = this.localData[group.parentID]; - context['default_' + parent.groupedBy[0]] = group.res_id; + var groupedByM2O = parent.fields[parent.groupedBy].type === 'many2one'; + context['default_' + parent.groupedBy[0]] = groupedByM2O ? group.res_id : group.value; var def; if (Object.keys(values).length === 1 && 'display_name' in values) { // only 'display_name is given, perform a 'name_create' -- cgit v1.2.3