[FIX] in a compound context, context n+1 has all of its preceding siblings in its evaluation context
bzr revid: xmo@openerp.com-20120405095009-v2i1xg8gf6lvigjv
This commit is contained in:
parent
239a118913
commit
a029cf244f
|
@ -625,24 +625,22 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
|||
var result_context = _.extend({}, this.user_context),
|
||||
self = this;
|
||||
_(contexts).each(function (ctx) {
|
||||
var evaluated = 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; }
|
||||
switch(ctx.__ref) {
|
||||
case 'context':
|
||||
_.extend(result_context, py.eval(
|
||||
ctx.__debug, evaluation_context));
|
||||
evaluated = py.eval(ctx.__debug, evaluation_context);
|
||||
break;
|
||||
case 'compound_context':
|
||||
var eval_context = self.test_eval_contexts([ctx.__eval_context]);
|
||||
_.extend(
|
||||
result_context, self.test_eval_contexts(
|
||||
ctx.__contexts, _.extend(
|
||||
{}, evaluation_context, eval_context)));
|
||||
evaluated = self.test_eval_contexts(
|
||||
ctx.__contexts, _.extend({}, evaluation_context, eval_context));
|
||||
break;
|
||||
default:
|
||||
_.extend(result_context, ctx);
|
||||
}
|
||||
_.extend(evaluation_context, evaluated);
|
||||
_.extend(result_context, evaluated);
|
||||
});
|
||||
return result_context;
|
||||
},
|
||||
|
|
|
@ -7,6 +7,53 @@ $(document).ready(function () {
|
|||
window.openerp.web.core(openerp);
|
||||
}
|
||||
});
|
||||
test('context_sequences', function () {
|
||||
// Context n should have base evaluation context + all of contexts
|
||||
// 0..n-1 in its own evaluation context
|
||||
var active_id = 4;
|
||||
var result = openerp.connection.test_eval_contexts([
|
||||
{
|
||||
"__contexts": [
|
||||
{
|
||||
"department_id": false,
|
||||
"lang": "en_US",
|
||||
"project_id": false,
|
||||
"section_id": false,
|
||||
"tz": false,
|
||||
"uid": 1
|
||||
},
|
||||
{ "search_default_create_uid": 1 },
|
||||
{}
|
||||
],
|
||||
"__eval_context": null,
|
||||
"__ref": "compound_context"
|
||||
},
|
||||
{
|
||||
"active_id": active_id,
|
||||
"active_ids": [ active_id ],
|
||||
"active_model": "purchase.requisition"
|
||||
},
|
||||
{
|
||||
"__debug": "{'record_id' : active_id}",
|
||||
"__id": "63e8e9bff8a6",
|
||||
"__ref": "context"
|
||||
}
|
||||
]);
|
||||
|
||||
deepEqual(result, {
|
||||
department_id: false,
|
||||
lang: 'en_US',
|
||||
project_id: false,
|
||||
section_id: false,
|
||||
tz: false,
|
||||
uid: 1,
|
||||
search_default_create_uid: 1,
|
||||
active_id: active_id,
|
||||
active_ids: [active_id],
|
||||
active_model: 'purchase.requisition',
|
||||
record_id: active_id
|
||||
});
|
||||
});
|
||||
test('non-literal_eval_contexts', function () {
|
||||
var result = openerp.connection.test_eval_contexts([{
|
||||
"__ref": "compound_context",
|
||||
|
|
Loading…
Reference in New Issue