From d46c61d7844c8aa67cbcde26f5e8d8c5ead278fb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 4 Mar 2013 11:14:14 +0100 Subject: [PATCH] [FIX] don't store user context properties into custom filter @context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- addons/web/static/src/js/search.js | 7 +++++++ addons/web/static/test/search.js | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 36f766407b7..975e9ef034b 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -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, diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js index 904af63f590..bc2ac90741a 100644 --- a/addons/web/static/test/search.js +++ b/addons/web/static/test/search.js @@ -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'],