diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index bf42fc4fd7f..9c8bf87902a 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -283,10 +283,10 @@ openerp.base.form.Widget = openerp.base.Controller.extend({
},
process_attrs: function() {
for (var a in this.attrs) {
- this[a] = this.eval_attrs(this.attrs[a]);
+ this[a] = this.compute_domain(this.attrs[a]);
}
},
- eval_attrs: function(expr) {
+ compute_domain: function(expr) {
var stack = [];
for (var i = 0; i < expr.length; i++) {
var ex = expr[i];
diff --git a/addons/base/static/test/form.js b/addons/base/static/test/form.js
new file mode 100644
index 00000000000..9d61bf6d60a
--- /dev/null
+++ b/addons/base/static/test/form.js
@@ -0,0 +1,54 @@
+$(document).ready(function () {
+ var widget;
+ module("form.widget", {
+ setup: function () {
+ var openerp = window.openerp.init(true);
+ window.openerp.base.chrome(openerp);
+ // views loader stuff
+ window.openerp.base.data(openerp);
+ window.openerp.base.views(openerp);
+ window.openerp.base.form(openerp);
+ widget = new openerp.base.form.Widget({
+ 'widgets': {},
+ 'fields': {}
+ }, {
+ 'attrs': {}
+ });
+ }
+ });
+ test("compute_domain", function () {
+ widget.view.fields = {
+ 'a': {value: 3},
+ 'group_method': {value: 'line'},
+ 'select1': {value: 'day'},
+ 'rrule_type': {value: 'monthly'}
+ };
+ ok(widget.compute_domain([['a', '=', 3]]));
+ ok(widget.compute_domain([['group_method','!=','count']]));
+ ok(widget.compute_domain([['select1','=','day'],
+ ['rrule_type','=','monthly']]));
+ });
+ test("compute_domain or", function () {
+ var base = {
+ 'section_id': {value: null},
+ 'user_id': {value: null},
+ 'member_ids': {value: null}
+ };
+
+ var domain = ['|', ['section_id', '=', 42],
+ '|', ['user_id','=',3],
+ ['member_ids', 'in', [3]]];
+
+ widget.view.fields = _.extend(
+ {}, base, {'section_id': {value: 42}});
+ ok(widget.compute_domain(domain));
+
+ widget.view.fields = _.extend(
+ {}, base, {'user_id': {value: 3}});
+ ok(widget.compute_domain(domain));
+
+ widget.view.fields = _.extend(
+ {}, base, {'member_ids': {value: 3}});
+ ok(widget.compute_domain(domain));
+ });
+});
diff --git a/addons/base/static/test/test.html b/addons/base/static/test/test.html
index 776b03146ff..5fcf4f4c594 100644
--- a/addons/base/static/test/test.html
+++ b/addons/base/static/test/test.html
@@ -21,6 +21,7 @@
+
+