diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-30 10:03:14 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-30 10:03:14 -0400 |
| commit | be523db4a2409ebf2d2979896f08e8ae77c8ee03 (patch) | |
| tree | ef06f3078742794d3eae68e5d0b3f803582e7222 /lib/sqlalchemy/orm/session.py | |
| parent | e082ca503c6aa91d3fe7ac466457045af0439f71 (diff) | |
| parent | 0c4f0f891654a378913c060da38829e81327097a (diff) | |
| download | sqlalchemy-be523db4a2409ebf2d2979896f08e8ae77c8ee03.tar.gz | |
merge default
Diffstat (limited to 'lib/sqlalchemy/orm/session.py')
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 3d5f94246..cbb508cf7 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -169,6 +169,7 @@ class SessionTransaction(object): def _assert_active(self, prepared_ok=False, rollback_ok=False, + deactive_ok=False, closed_msg="This transaction is closed"): if self._state is COMMITTED: raise sa_exc.InvalidRequestError( @@ -182,7 +183,7 @@ class SessionTransaction(object): "SQL can be emitted within this transaction." ) elif self._state is DEACTIVE: - if not rollback_ok: + if not deactive_ok and not rollback_ok: if self._rollback_exception: raise sa_exc.InvalidRequestError( "This Session's transaction has been rolled back " @@ -192,7 +193,7 @@ class SessionTransaction(object): " Original exception was: %s" % self._rollback_exception ) - else: + elif not deactive_ok: raise sa_exc.InvalidRequestError( "This Session's transaction has been rolled back " "by a nested rollback() call. To begin a new " @@ -435,7 +436,7 @@ class SessionTransaction(object): return self def __exit__(self, type, value, traceback): - self._assert_active(prepared_ok=True) + self._assert_active(deactive_ok=True, prepared_ok=True) if self.session.transaction is None: return if type is None: |
