From 6f16fc3df9ae6363abafb3888591f690f3431861 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 28 Sep 2012 13:35:24 +0200 Subject: [PATCH] [FIX] resolve m2m content to record names in list view bzr revid: xmo@openerp.com-20120928113524-1jw0uj3nccupcjjq --- addons/web/static/src/js/formats.js | 3 +++ addons/web/static/src/js/view_list.js | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index 797e1a2cbdf..3e5e6fecd5e 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -138,6 +138,9 @@ instance.web.format_value = function (value, descriptor, value_if_empty) { return value[1]; case 'one2many': case 'many2many': + if (typeof value === 'string') { + return value; + } return _.str.sprintf(_t("(%d records)"), value.length); case 'datetime': if (typeof(value) == "string") diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index ce9b0657490..ff06b5865c8 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1010,6 +1010,28 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. record.set(column.id, names[0]); }); } + } else if (column.type === 'many2many') { + value = record.get(column.id); + // non-resolved (string) m2m values are arrays + if (value instanceof Array && !_.isEmpty(value)) { + var ids; + // they come in two shapes: + if (value[0] instanceof Array) { + var command = value[0]; + // 1. an array of m2m commands (usually (6, false, ids)) + if (command[0] !== 6) { + throw new Error(_t("Unknown m2m command ") + command[0]); + } + ids = command[2]; + } else { + // 2. an array of ids + ids = value; + } + new instance.web.Model(column.relation) + .call('name_get', [ids]).then(function (names) { + record.set(column.id, _(names).pluck(1).join(', ')); + }) + } } return column.format(record.toForm().data, { model: this.dataset.model,