diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-20 18:39:27 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-20 18:39:27 -0400 |
| commit | 248cf4c5d2f227c7cc49772f023807aebeb5c969 (patch) | |
| tree | 1305b8a8db9203093d9ddf9e26f0bc5bc7a26cf1 /lib/sqlalchemy/orm/session.py | |
| parent | e5accce97bae1b35eeb1eb26f8281a98c58d2cef (diff) | |
| download | sqlalchemy-248cf4c5d2f227c7cc49772f023807aebeb5c969.tar.gz | |
- [feature] New session events after_transaction_create
and after_transaction_end
allows tracking of new SessionTransaction objects.
If the object is inspected, can be used to determine
when a session first becomes active and when
it deactivates.
Diffstat (limited to 'lib/sqlalchemy/orm/session.py')
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index e0f79cd8a..36ff5fc84 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -150,6 +150,9 @@ class SessionTransaction(object): if self.session._enable_transaction_accounting: self._take_snapshot() + if self.session.dispatch.after_transaction_create: + self.session.dispatch.after_transaction_create(self.session, self) + @property def is_active(self): return self.session is not None and self._active @@ -379,9 +382,14 @@ class SessionTransaction(object): connection.close() else: transaction.close() + + self._deactivate() + if self.session.dispatch.after_transaction_end: + self.session.dispatch.after_transaction_end(self.session, self) + + if self._parent is None: if not self.session.autocommit: self.session.begin() - self._deactivate() self.session = None self._connections = None |
