[MERGE] search many2one default create in context

bzr revid: al@openerp.com-20120628142640-kp5scu95zuy7alrw
This commit is contained in:
Antony Lesuisse
2012-06-28 16:26:40 +02:00
2 changed files with 31 additions and 1 deletions
+10 -1
View File
@@ -1189,7 +1189,7 @@ instance.web.search.Field = instance.web.search.Input.extend( /** @lends instanc
var self = this;
// A field needs a context to send when active
var context = this.attrs.context;
if (!context || !facet.values.length) {
if (_.isEmpty(context) || !facet.values.length) {
return;
}
var contexts = facet.values.map(function (facetValue) {
@@ -1485,6 +1485,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 (_.isEmpty(this.attrs.context) && values.length === 1) {
var c = {};
c['default_' + this.attrs.name] = values.at(0).get('value');
return c;
}
return this._super(facet);
}
});
+21
View 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: {