summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core/session.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/core/session.js')
-rw-r--r--addons/web/static/src/js/core/session.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/addons/web/static/src/js/core/session.js b/addons/web/static/src/js/core/session.js
index 2874a2ea559..21103a9529a 100644
--- a/addons/web/static/src/js/core/session.js
+++ b/addons/web/static/src/js/core/session.js
@@ -5,6 +5,7 @@ var ajax = require('web.ajax');
var concurrency = require('web.concurrency');
var config = require('web.config');
var core = require('web.core');
+var local_storage = require('web.local_storage');
var mixins = require('web.mixins');
var utils = require('web.utils');
@@ -305,6 +306,12 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, {
options.headers["X-Debug-Mode"] = $.deparam($.param.querystring()).debug;
}
+ // we add here the user context for ALL queries, mainly to pass
+ // the allowed_company_ids key
+ if (params && params.kwargs) {
+ params.kwargs.context = _.extend(params.kwargs.context || {}, this.user_context);
+ }
+
// TODO: remove
if (! _.isString(url)) {
_.extend(options, url);
@@ -359,6 +366,22 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, {
});
},
+ setCompanies: function (main_company_id, company_ids) {
+ var hash = $.bbq.getState()
+ hash.cids = company_ids.sort(function(a, b) {
+ if (a === main_company_id) {
+ return -1;
+ } else if (b === main_company_id) {
+ return 1;
+ } else {
+ return a - b;
+ }
+ }).join(',');
+ utils.set_cookie('cids', hash.cids || String(main_company_id));
+ $.bbq.pushState({'cids': hash.cids}, 0);
+ location.reload();
+ },
+
//--------------------------------------------------------------------------
// Handlers
//--------------------------------------------------------------------------