summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2012-04-05 14:44:50 +0200
committerThibault Delavallée <tde@openerp.com>2012-04-05 14:44:50 +0200
commita3120a0509cd3ed54bc542bf9a2a14b77fec2e1c (patch)
tree500861021b732ee9c008e658bc927b41c4f62680 /addons/web/static/src
parent4229755f81418a3ba34111bc1daf7eb595cdaa15 (diff)
parentcbc38a346d90fb144b1399c81f20d2c1191b516c (diff)
[MERGE] Merged with main web
bzr revid: tde@openerp.com-20120404134238-lrdsmnfkf7sfj3zb bzr revid: tde@openerp.com-20120405124450-h0nnkvmw7xhir1ih
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/core.js47
-rw-r--r--addons/web/static/src/js/search.js8
2 files changed, 32 insertions, 23 deletions
diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js
index fef97527a68..ffdabb75c90 100644
--- a/addons/web/static/src/js/core.js
+++ b/addons/web/static/src/js/core.js
@@ -13,7 +13,7 @@ openerp.web.core = function(openerp) {
// a function to override the "extend()" method of JR's inheritance, allowing
// the usage of "include()"
-oe_override_class = function(claz){
+var oe_override_class = function(claz){
var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ?
/\b_super\b/ : /.*/;
@@ -580,7 +580,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
openerp.webclient.notification.warn('Context fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
- source: source.contexts
+ source: JSON.stringify(source.contexts)
}), true);
}
@@ -598,7 +598,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
openerp.webclient.notification.warn('Domain fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
- source: source.domains
+ source: JSON.stringify(source.domains)
}), true);
}
@@ -616,40 +616,48 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
openerp.webclient.notification.warn('GroupBy fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
- source: source.group_by_seq
+ source: JSON.stringify(source.group_by_seq)
}), true);
}
},
- test_eval_contexts: function (contexts) {
- var result_context = _.extend({}, this.user_context),
- self = this;
- _(contexts).each(function (ctx) {
+ test_eval_contexts: function (contexts, evaluation_context) {
+ evaluation_context = evaluation_context || {};
+ var self = this;
+ return _(contexts).reduce(function (result_context, ctx) {
+ // __eval_context evaluations can lead to some of `contexts`'s
+ // values being null, skip them as well as empty contexts
+ if (_.isEmpty(ctx)) { return result_context; }
+ var evaluated = ctx;
switch(ctx.__ref) {
case 'context':
- _.extend(result_context, py.eval(ctx.__debug));
+ evaluated = py.eval(ctx.__debug, evaluation_context);
break;
case 'compound_context':
- _.extend(
- result_context, self.test_eval_contexts(ctx.__contexts));
+ var eval_context = self.test_eval_contexts([ctx.__eval_context]);
+ evaluated = self.test_eval_contexts(
+ ctx.__contexts, _.extend({}, evaluation_context, eval_context));
break;
- default:
- _.extend(result_context, ctx);
}
- });
- return result_context;
+ // add newly evaluated context to evaluation context for following
+ // siblings
+ _.extend(evaluation_context, evaluated);
+ return _.extend(result_context, evaluated);
+ }, _.extend({}, this.user_context));
},
- test_eval_domains: function (domains, eval_context) {
+ test_eval_domains: function (domains, evaluation_context) {
var result_domain = [], self = this;
_(domains).each(function (dom) {
switch(dom.__ref) {
case 'domain':
result_domain.push.apply(
- result_domain, py.eval(dom.__debug, eval_context));
+ result_domain, py.eval(dom.__debug, evaluation_context));
break;
case 'compound_domain':
+ var eval_context = self.test_eval_contexts([dom.__eval_context]);
result_domain.push.apply(
result_domain, self.test_eval_domains(
- dom.__domains, eval_context));
+ dom.__domains, _.extend(
+ {}, evaluation_context, eval_context)));
break;
default:
result_domain.push.apply(
@@ -667,7 +675,8 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
group = py.eval(ctx.__debug).group_by;
break;
case 'compound_context':
- group = self.test_eval_contexts(ctx.__contexts).group_by;
+ group = self.test_eval_contexts(
+ ctx.__contexts, ctx.__eval_context).group_by;
break;
default:
group = ctx.group_by
diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js
index 8e89595585b..0136d41ada0 100644
--- a/addons/web/static/src/js/search.js
+++ b/addons/web/static/src/js/search.js
@@ -787,9 +787,8 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w
if (!(has_value && context)) {
return;
}
- return _.extend(
- {}, context,
- {own_values: {self: val}});
+ return new openerp.web.CompoundContext(context)
+ .set_eval_context({self: val});
},
/**
* Function creating the returned domain for the field, override this
@@ -818,7 +817,8 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w
this.attrs.operator || this.default_operator,
val);
}
- return _.extend({}, domain, {own_values: {self: val}});
+ return new openerp.web.CompoundDomain(domain)
+ .set_eval_context({self: val});
}
});
/**