- Each time we check if a session is valid we create a new cursor. This could lead to issues with db_maxconn that limits the number of connections to the postgresql server. In a perfect world, a worker should use a single connection to postgres to process the request. The only known side effect is that the cursor is created earlier in the execution of the code. - This commit fixes issues with the longpolling raising Psycopg2.PoolError exceptions on databases with a lot of clients.
25 lines
779 B
Python
25 lines
779 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import odoo
|
|
import odoo.exceptions
|
|
|
|
def login(db, login, password):
|
|
res_users = odoo.registry(db)['res.users']
|
|
return res_users._login(db, login, password)
|
|
|
|
def check(db, uid, passwd):
|
|
res_users = odoo.registry(db)['res.users']
|
|
return res_users.check(db, uid, passwd)
|
|
|
|
def compute_session_token(session, env):
|
|
self = env['res.users'].browse(session.uid)
|
|
return self._compute_session_token(session.sid)
|
|
|
|
def check_session(session, env):
|
|
self = env['res.users'].browse(session.uid)
|
|
if odoo.tools.misc.consteq(self._compute_session_token(session.sid), session.session_token):
|
|
return True
|
|
self._invalidate_session_cache()
|
|
return False
|