From a3a45e18b3bf861de4f6b84892f2930dfb7c94b7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 6 Oct 2011 08:39:49 +0200 Subject: [PATCH] [FIX] m2o fields with selection widget in search view Plan was originally to just ignore this because "it should just work" but turns out m2o and m2o[@widget=selection] fields have very different behaviors when it comes to default values, especially custom domains and contexts: * An m2o field uses its string value always (behaves like a char field), for UI and clarity purposes we added an [[name, '=', id]] case when the user specifically selects an autocompletion value, but that's not "cannon", when it comes to dealing with custom domains (filter_domain) and contexts the field always uses its string value. * An m2o[@widget=selection] field on the other hand uses its ids always (behaves like a selection field). That's not entirely true, really, because it has the converse to what we implemented on the m2o field in the web client (in the GTK client): if there is no @filter_domain *and* the user has entered a value which is not in the dropdown (it's a combobox in the GTK client), then it falls back on using 'ilike'. This string value is *not* used in custom domains and custom filters, which simply are not submitted. This second section has *not* been implemented so far in the web client, we'll come round to it if people actually need it. bzr revid: xmo@openerp.com-20111006063949-fl5rbg3wwubcaay8 --- addons/web/static/src/js/search.js | 22 ++++++++++++++++++++-- addons/web/static/src/xml/base.xml | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index cf253c3d54b..ec520a1881a 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -116,8 +116,9 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search */ make_field: function (item, field) { try { - return new (openerp.web.search.fields.get_object(field.type)) - (item, field, this); + return new (openerp.web.search.fields.get_any( + [item.attrs.widget, field.type])) + (item, field, this); } catch (e) { if (! e instanceof openerp.web.KeyNotFound) { throw e; @@ -759,7 +760,24 @@ openerp.web.search.FloatField = openerp.web.search.NumberField.extend(/** @lends * @extends openerp.web.search.Field */ openerp.web.search.SelectionField = openerp.web.search.Field.extend(/** @lends openerp.web.search.SelectionField# */{ + // This implementation is a basic -