From 1f84b7a37dd0bee6ad599e3fdc8afd5f2520a1b7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 26 Jun 2012 11:13:07 +0200 Subject: [PATCH] [ADD] set 'default_' key in context when searching on a single existing record in an m2o, by default bzr revid: xmo@openerp.com-20120626091307-45vygymu8y1198ar --- addons/web/static/src/js/search.js | 9 +++++++++ addons/web/static/test/search.js | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 85521a1..4faf9da 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1530,6 +1530,15 @@ instance.web.search.ManyToOneField = instance.web.search.CharField.extend({ return [[name, '=', facetValue.get('value')]]; } return this._super(name, operator, facetValue); + }, + get_context: function (facet) { + var values = facet.values; + if (!this.attrs.context && values.length === 1) { + var c = {}; + c['default_' + this.attrs.name] = values.at(0).get('value'); + return c; + } + return this._super(facet); } }); diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js index e5beab2..dc94fad 100644 --- a/addons/web/static/test/search.js +++ b/addons/web/static/test/search.js @@ -843,6 +843,25 @@ $(document).ready(function () { deepEqual(f.get_domain(facet), [['foo', '=', 42]], "m2o should use identity if default domain"); + deepEqual(f.get_context(facet), {default_foo: 42}, + "m2o should use value as context default"); + }); + test("M2O default multiple values", function () { + var f = new instance.web.search.ManyToOneField( + {}, {name: 'foo'}, {inputs: []}); + var facet = new instance.web.search.Facet({ + field: f, + values: [ + {label: "Foo", value: 42}, + {label: "Bar", value: 36} + ] + }); + + deepEqual(f.get_domain(facet).__domains, + [['|'], [['foo', '=', 42]], [['foo', '=', 36]]], + "m2o should or multiple values"); + equal(f.get_context(facet), null, + "m2o should not have default context in case of multiple values"); }); test("M2O custom operator", function () { var f = new instance.web.search.ManyToOneField( @@ -854,6 +873,8 @@ $(document).ready(function () { deepEqual(f.get_domain(facet), [['foo', 'boos', 'Foo']], "m2o should use label with custom operators"); + deepEqual(f.get_context(facet), {default_foo: 42}, + "m2o should use value as context default"); }); test("M2O custom domain & context", function () { var f = new instance.web.search.ManyToOneField({attrs: { -- 1.7.10.4