summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js15
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_model.js4
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js13
-rw-r--r--addons/web/static/src/js/views/view_dialogs.js24
-rw-r--r--addons/web/static/src/js/widgets/debug_manager.js4
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js1
6 files changed, 44 insertions, 17 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 9b1e930cef3..c2bd4f5d5b8 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -401,8 +401,8 @@ var FieldMany2One = AbstractField.extend({
initial_ids: ids ? _.map(ids, function (x) { return x[0]; }) : undefined,
initial_view: view,
disable_multiple_selection: true,
- on_selected: function (element_ids) {
- self.reinitialize({id: element_ids[0]});
+ on_selected: function (records) {
+ self.reinitialize(records[0]);
self.activate();
}
})).open();
@@ -1150,15 +1150,16 @@ var FieldMany2Many = FieldX2Many.extend({
title: _t("Add: ") + this.string,
no_create: this.nodeOptions.no_create || !this.activeActions.create,
fields_view: this.attrs.views.form,
- on_selected: function (res_ids) {
- var new_ids = _.difference(res_ids, self.value.res_ids);
- if (new_ids.length) {
- var values = _.map(new_ids, function (id) {
+ on_selected: function (records) {
+ var resIDs = _.pluck(records, 'id');
+ var newIDs = _.difference(resIDs, self.value.res_ids);
+ if (newIDs.length) {
+ var values = _.map(newIDs, function (id) {
return {id: id};
});
self._setValue({
operation: 'ADD_M2M',
- ids: values
+ ids: values,
});
}
}
diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js
index eb6d7176884..4374421d7b3 100644
--- a/addons/web/static/src/js/views/calendar/calendar_model.js
+++ b/addons/web/static/src/js/views/calendar/calendar_model.js
@@ -2,6 +2,7 @@ odoo.define('web.CalendarModel', function (require) {
"use strict";
var AbstractModel = require('web.AbstractModel');
+var Context = require('web.Context');
var core = require('web.core');
var fieldUtils = require('web.field_utils');
var session = require('web.session');
@@ -298,11 +299,12 @@ return AbstractModel.extend({
data[k] = dateToServer(data[k]);
}
}
+ var context = new Context(this.data.context, {from_ui: true});
return this._rpc({
model: this.modelName,
method: 'write',
args: [[record.id], data],
- context: this.data.context
+ context: context
});
},
diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js
index 2465b1ee3c5..7222d792c69 100644
--- a/addons/web/static/src/js/views/list/list_controller.js
+++ b/addons/web/static/src/js/views/list/list_controller.js
@@ -87,9 +87,20 @@ var ListController = BasicController.extend({
* @returns {number[]} list of res_ids
*/
getSelectedIds: function () {
+ return _.map(this.getSelectedRecords(), function (record) {
+ return record.res_id;
+ });
+ },
+ /**
+ * Returns the list of currently selected records (with the check boxes on
+ * the left)
+ *
+ * @returns {Object[]} list of records
+ */
+ getSelectedRecords: function () {
var self = this;
return _.map(this.selectedRecords, function (db_id) {
- return self.model.get(db_id, {raw: true}).res_id;
+ return self.model.get(db_id, {raw: true});
});
},
/**
diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js
index 876c37fbd59..645540b7a57 100644
--- a/addons/web/static/src/js/views/view_dialogs.js
+++ b/addons/web/static/src/js/views/view_dialogs.js
@@ -238,8 +238,11 @@ var SelectCreateListController = ListController.extend({
// row of the list) such that it triggers up 'select_record' with its res_id.
custom_events: _.extend({}, ListController.prototype.custom_events, {
open_record: function (event) {
- var selected_record = this.model.get(event.data.id);
- this.trigger_up('select_record', {id: selected_record.res_id});
+ var selectedRecord = this.model.get(event.data.id);
+ this.trigger_up('select_record', {
+ id: selectedRecord.res_id,
+ display_name: selectedRecord.data.display_name,
+ });
},
}),
});
@@ -251,7 +254,7 @@ var SelectCreateDialog = ViewDialog.extend({
custom_events: _.extend({}, ViewDialog.prototype.custom_events, {
select_record: function (event) {
if (!this.options.readonly) {
- this.on_selected([event.data.id]);
+ this.on_selected([event.data]);
this.close();
}
},
@@ -369,7 +372,14 @@ var SelectCreateDialog = ViewDialog.extend({
disabled: true,
close: true,
click: function () {
- self.on_selected(self.list_controller.getSelectedIds());
+ var records = self.list_controller.getSelectedRecords();
+ var values = _.map(records, function (record) {
+ return {
+ id: record.res_id,
+ display_name: record.data.display_name,
+ };
+ });
+ self.on_selected(values);
},
});
}
@@ -399,7 +409,11 @@ var SelectCreateDialog = ViewDialog.extend({
var self = this;
var dialog = new FormViewDialog(this, _.extend({}, this.options, {
on_saved: function (record) {
- self.on_selected([record.res_id]);
+ var values = [{
+ id: record.res_id,
+ display_name: record.data.display_name,
+ }];
+ self.on_selected(values);
},
})).open();
dialog.on('closed', this, this.close.bind(this));
diff --git a/addons/web/static/src/js/widgets/debug_manager.js b/addons/web/static/src/js/widgets/debug_manager.js
index c74ce95ac1b..a57e452de4b 100644
--- a/addons/web/static/src/js/widgets/debug_manager.js
+++ b/addons/web/static/src/js/widgets/debug_manager.js
@@ -169,11 +169,11 @@ var DebugManager = Widget.extend({
title: _t('Select a view'),
disable_multiple_selection: true,
domain: [['type', '!=', 'qweb'], ['type', '!=', 'search']],
- on_selected: function (element_ids) {
+ on_selected: function (records) {
self._rpc({
model: 'ir.ui.view',
method: 'search_read',
- domain: [['id', '=', element_ids[0]]],
+ domain: [['id', '=', records[0].id]],
fields: ['name', 'model', 'type'],
limit: 1,
})
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index 45110c7cf9a..2020e0124f3 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -3463,7 +3463,6 @@ QUnit.module('relational_fields', {
'</form>',
mockRPC: function (method, args) {
if (args.method === 'write') {
- // debugger;
assert.deepEqual(args.args[1].turtles, [
[1, 3, {display_name: 'coucou', turtle_foo: 'has changed', turtle_int: 42}],
], "correct commands should be sent (only send changed values)");