[FIX] don't store user context properties into custom filter @context

This leads to any subsequent view overwriting the current user's lang
or timezone with the one active when the filter was created,
generating dismay and discontent (e.g. part of the user interface
switching from spanish to english or english to german, depending on
the respective settings of the current user and the filter creator —
at time of filter creation).

bzr revid: xmo@openerp.com-20130304101414-mm6ai1dkltd7ard5
This commit is contained in:
Xavier Morel 2013-03-04 11:14:14 +01:00
parent 0e370076f7
commit d46c61d784
2 changed files with 29 additions and 0 deletions

View File

@ -1680,6 +1680,13 @@ instance.web.search.CustomFilters = instance.web.search.Input.extend({
if (!_.isEmpty(results.group_by)) {
results.context.group_by = results.group_by;
}
// Don't save user_context keys in the custom filter, otherwise end
// up with e.g. wrong uid or lang stored *and used in subsequent
// reqs*
var ctx = results.context;
_(_.keys(instance.session.user_context)).each(function (key) {
delete ctx[key];
});
var filter = {
name: $name.val(),
user_id: private_filter ? instance.session.uid : false,

View File

@ -1127,6 +1127,28 @@ openerp.testing.section('saved_filters', {
"should have selected second filter");
});
});
test('creation', {asserts: 2}, function (instance, $fix, mock) {
// force a user context
instance.session.user_context = {foo: 'bar'};
var view = makeSearchView(instance);
var done = $.Deferred();
mock('ir.filters:get_filters', function () { return []; });
mock('ir.filters:create_or_replace', function (args) {
var filter = args[0];
deepEqual(filter.context, {}, "should have empty context");
deepEqual(filter.domain, [], "should have empty domain");
done.resolve();
});
return view.appendTo($fix)
.then(function () {
$fix.find('.oe_searchview_custom input#oe_searchview_custom_input')
.text("filter name")
.end()
.find('.oe_searchview_custom button').click();
return done.promise();
});
});
});
openerp.testing.section('advanced', {
dependencies: ['web.search'],