bzr revid: hda@tinyerp.com-20100112104830-x35l4g08og2gacwo
This commit is contained in:
HDA (OpenERP)
2010-01-12 16:18:30 +05:30
25 changed files with 747 additions and 156 deletions
+21 -7
View File
@@ -299,17 +299,31 @@ class Connection(object):
self.dbname = dbname
self._pool = pool
self._unique = unique
if unique:
if dbname not in self.__LOCKS:
self.__LOCKS[dbname] = threading.Lock()
self.__LOCKS[dbname].acquire()
def __del__(self):
def __enter__(self):
if self._unique:
close_db(self.dbname)
self.__LOCKS[self.dbname].release()
self.lock()
return self
def __exit__(self, exc_type, exc_value, traceback):
if self._unique:
self.release()
def lock(self):
if self.dbname not in self.__LOCKS:
self.__LOCKS[self.dbname] = threading.Lock()
self.__LOCKS[self.dbname].acquire()
def release(self):
close_db(self.dbname)
self.__LOCKS[self.dbname].release()
def cursor(self, serialized=False):
if self._unique:
lock = self.__LOCKS.get(self.dbname, None)
if not (lock and lock.locked()):
netsvc.Logger().notifyChannel('Connection', netsvc.LOG_WARNING, 'Unprotected connection to %s' % (self.dbname,))
return Cursor(self._pool, self.dbname, serialized=serialized)
def serialized_cursor(self):