diff options
| author | Raphael Collet <rco@odoo.com> | 2019-08-26 13:38:17 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2019-08-26 13:39:16 +0000 |
| commit | c7f5c4afd2099f951dfe433ab18716062b2843db (patch) | |
| tree | d16605195cdebbc2b5a9868986a08ca6870a13b2 /odoo/sql_db.py | |
| parent | eafdf1812d3ef545400bf9f6acd6842de807a33a (diff) | |
[FIX] sql_db: add flush() in savepoint()
closes odoo/odoo#36060
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/sql_db.py')
| -rw-r--r-- | odoo/sql_db.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py index 5cedf34b428..c7990b025ef 100644 --- a/odoo/sql_db.py +++ b/odoo/sql_db.py @@ -425,13 +425,20 @@ class Cursor(object): @contextmanager @check - def savepoint(self): + def savepoint(self, flush=True): """context manager entering in a new savepoint""" name = uuid.uuid1().hex + env = get_env(currentframe(), 2) if flush else None + if env is not None: + env['base'].flush() self.execute('SAVEPOINT "%s"' % name) try: yield + if env is not None: + env['base'].flush() except Exception: + if env is not None: + env.clear() self.execute('ROLLBACK TO SAVEPOINT "%s"' % name) raise else: |
