summaryrefslogtreecommitdiff
path: root/odoo/sql_db.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/sql_db.py')
-rw-r--r--odoo/sql_db.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py
index debc9f48c42..ed5cf07884d 100644
--- a/odoo/sql_db.py
+++ b/odoo/sql_db.py
@@ -22,6 +22,8 @@ from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ
from psycopg2.pool import PoolError
from werkzeug import urls
+from odoo.api import Environment
+
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
_logger = logging.getLogger(__name__)
@@ -367,6 +369,10 @@ class Cursor(object):
def commit(self):
""" Perform an SQL `COMMIT`
"""
+ for env in Environment.envs:
+ if env.cr is self:
+ env['base'].flush()
+ break
result = self._cnx.commit()
for func in self._pop_event_handlers()['commit']:
func()
@@ -376,6 +382,10 @@ class Cursor(object):
def rollback(self):
""" Perform an SQL `ROLLBACK`
"""
+ for env in Environment.envs:
+ if env.cr is self:
+ env.clear()
+ break
result = self._cnx.rollback()
for func in self._pop_event_handlers()['rollback']:
func()
@@ -463,9 +473,17 @@ class TestCursor(object):
_logger.debug("TestCursor.autocommit(%r) does nothing", on)
def commit(self):
+ for env in Environment.envs:
+ if env.cr is self:
+ env['base'].flush()
+ break
self._cursor.execute('SAVEPOINT "%s"' % self._savepoint)
def rollback(self):
+ for env in Environment.envs:
+ if env.cr is self:
+ env.clear()
+ break
self._cursor.execute('ROLLBACK TO SAVEPOINT "%s"' % self._savepoint)
def __enter__(self):