[ADD] set 'default_' key in context when searching on a single existing record in...
authorXavier Morel <xmo@openerp.com>
Tue, 26 Jun 2012 09:13:07 +0000 (11:13 +0200)
committerXavier Morel <xmo@openerp.com>
Tue, 26 Jun 2012 09:13:07 +0000 (11:13 +0200)
bzr revid: xmo@openerp.com-20120626091307-45vygymu8y1198ar

addons/web/static/src/js/search.js
addons/web/static/test/search.js

index 85521a1..4faf9da 100644 (file)
@@ -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);
     }
 });
 
index e5beab2..dc94fad 100644 (file)
@@ -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: {