]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fix bug preventing multiple SessionExtensions from being correctly converted to...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 28 Nov 2010 21:43:30 +0000 (16:43 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 28 Nov 2010 21:43:30 +0000 (16:43 -0500)
lib/sqlalchemy/orm/session.py
test/orm/test_session.py

index 292074663439b8e232ddd8c97eeb0ac7f92c5eaf..f0e534bfcd9d1516e439eee53bd147ef8174e7a7 100644 (file)
@@ -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():
index 0486a8124594e04bbf68893ca99b9872d85b5aa4..7dac003243e2583090b3755c1e2c529d07c3564f 100644 (file)
@@ -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'