]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- [bug] Fixed bug whereby event.listen(SomeClass)
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 7 Jan 2012 17:57:22 +0000 (12:57 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 7 Jan 2012 17:57:22 +0000 (12:57 -0500)
forced an entirely unnecessary compile of the
mapper, making events very hard to set up
at module import time (nobody noticed this ??)
[ticket:2367]

CHANGES
lib/sqlalchemy/orm/events.py
test/orm/test_events.py

diff --git a/CHANGES b/CHANGES
index 56aede3c88131d8970ef820542a6e4d68bda43b5..178cac3b3613c2c28fb432ebd32111d51665b3b7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,12 @@ CHANGES
 0.7.5
 =====
 - orm
+  - [bug] Fixed bug whereby event.listen(SomeClass)
+    forced an entirely unnecessary compile of the 
+    mapper, making events very hard to set up
+    at module import time (nobody noticed this ??)  
+    [ticket:2367]
+
   - [bug] Fixed bug whereby hybrid_property didn't 
     work as a kw arg in any(), has().
 
index dd948bb1aa98521d608d9f5da333e885701804c6..d319a3bbb7c69806173794a9a563d4125e87e84d 100644 (file)
@@ -335,7 +335,7 @@ class MapperEvents(event.Events):
             if issubclass(target, orm.Mapper):
                 return target
             else:
-                return orm.class_mapper(target)
+                return orm.class_mapper(target, compile=False)
         else:
             return target
 
index 6e5a676f4e6c20ba7722879e2f7c8c9cd84797e0..e52b9299f5d3dc86837bd04a073a2ddc5d403247 100644 (file)
@@ -100,6 +100,14 @@ class MapperEventsTest(_RemoveListeners, _fixtures.FixtureTest):
             event.listen(mapper, meth, evt(meth), **kw)
         return canary
 
+    def test_listen_doesnt_force_compile(self):
+        User, users = self.classes.User, self.tables.users
+        m = mapper(User, users, properties={
+            'addresses':relationship(lambda: ImNotAClass)
+        })
+        event.listen(User, "before_insert", lambda *a, **kw:None)
+        assert not m.configured
+
     def test_basic(self):
         User, users = self.classes.User, self.tables.users