[fix] partially solve problem when restituting session and problem with server (disconnected, database dropped, etc...)

bzr revid: nicolas.vanhoren@openerp.com-20110916102555-myvdxf30fl7jpb3a
This commit is contained in:
niv-openerp
2011-09-16 12:25:55 +02:00
parent caef181733
commit 08143aaab5
3 changed files with 9 additions and 6 deletions
+6 -6
View File
@@ -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()
+1
View File
@@ -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,
+2
View File
@@ -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();
});
},
/**