From 08143aaab5e7a2ffb55771071d8252a9207c1517 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 16 Sep 2011 12:25:55 +0200 Subject: [PATCH] [fix] partially solve problem when restituting session and problem with server (disconnected, database dropped, etc...) bzr revid: nicolas.vanhoren@openerp.com-20110916102555-myvdxf30fl7jpb3a --- addons/web/common/session.py | 12 ++++++------ addons/web/controllers/main.py | 1 + addons/web/static/src/js/core.js | 2 ++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/addons/web/common/session.py b/addons/web/common/session.py index 3691f88e3f5..d1997a3f903 100644 --- a/addons/web/common/session.py +++ b/addons/web/common/session.py @@ -43,30 +43,30 @@ class OpenERPSession(object): def build_connection(self): return openerplib.get_connection(hostname=self._server, port=self._port, - database=self._db, + database=self._db, login=self._login, user_id=self._uid, password=self._password) def proxy(self, service): return self.build_connection().get_service(service) - def bind(self, db, uid, password): + def bind(self, db, uid, login, password): self._db = db self._uid = uid + self._login = login self._password = password def login(self, db, login, password): uid = self.proxy('common').login(db, login, password) - self.bind(db, uid, password) - self._login = login + self.bind(db, uid, login, password) if uid: self.get_context() return uid - def assert_valid(self): + def assert_valid(self, force=False): """ Ensures this session is valid (logged into the openerp server) """ - self.build_connection().check_login(False) + self.build_connection().check_login(force) def execute(self, model, func, *l, **d): self.assert_valid() diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 6ce4bd612f2..d0c8950f9e1 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -301,6 +301,7 @@ class Session(openerpweb.Controller): } @openerpweb.jsonrequest def get_session_info(self, req): + req.session.assert_valid(force=True) return { "uid": req.session._uid, "context": req.session.get_context() if req.session._uid else False, diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 6462529d0c9..6ae52f6092c 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -501,6 +501,8 @@ openerp.web.Session = openerp.web.CallbackEnabled.extend( /** @lends openerp.web self.on_session_valid(); else self.on_session_invalid(); + }, function() { + self.on_session_invalid(); }); }, /**