From: Mike Bayer Date: Sun, 28 Nov 2010 21:43:30 +0000 (-0500) Subject: - fix bug preventing multiple SessionExtensions from being correctly converted to... X-Git-Tag: rel_0_7b1~219 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69ee83d1cb3c94642518a36de59ca001c63324fd;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix bug preventing multiple SessionExtensions from being correctly converted to event listeners --- 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'