From 69ee83d1cb3c94642518a36de59ca001c63324fd Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 28 Nov 2010 16:43:30 -0500 Subject: [PATCH] - fix bug preventing multiple SessionExtensions from being correctly converted to event listeners --- lib/sqlalchemy/orm/session.py | 2 +- test/orm/test_session.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 2920746634..f0e534bfcd 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -515,7 +515,7 @@ class Session(object): if extension: for ext in util.to_list(extension): - SessionExtension._adapt_listener(self, extension) + SessionExtension._adapt_listener(self, ext) if binds is not None: for mapperortable, bind in binds.iteritems(): diff --git a/test/orm/test_session.py b/test/orm/test_session.py index 0486a81245..7dac003243 100644 --- a/test/orm/test_session.py +++ b/test/orm/test_session.py @@ -1568,7 +1568,27 @@ class SessionExtensionTest(_fixtures.FixtureTest): conn = sess.connection() assert log == ['after_begin'] + @testing.resolve_artifact_names + def test_multiple_extensions(self): + log = [] + class MyExt1(sa.orm.session.SessionExtension): + def before_commit(self, session): + log.append('before_commit_one') + + + class MyExt2(sa.orm.session.SessionExtension): + def before_commit(self, session): + log.append('before_commit_two') + mapper(User, users) + sess = create_session(extension = [MyExt1(), MyExt2()]) + u = User(name='u1') + sess.add(u) + sess.flush() + assert log == [ + 'before_commit_one', + 'before_commit_two', + ] class DisposedStates(_base.MappedTest): run_setup_mappers = 'once' -- 2.47.3