]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
getting attributes to work
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 8 Aug 2010 23:36:07 +0000 (19:36 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 8 Aug 2010 23:36:07 +0000 (19:36 -0400)
lib/sqlalchemy/event.py
lib/sqlalchemy/orm/attributes.py
test/orm/test_unitofwork.py

index 91d1bb82f8f2924d1e854ecdf7705a0737fd1a51..73be57b55c26250f75f72dd6d2ec5536c0b3467e 100644 (file)
@@ -18,9 +18,8 @@ def listen(fn, identifier, target, *args, **kw):
     # what to do
     
     for evt_cls in _registrars[identifier]:
-        evt = evt_cls.accept_with(target)
-        if evt:
-            evt.listen(fn, identifier, target, *args, **kw)
+        for tgt in evt_cls.accept_with(target):
+            tgt.events.listen(fn, identifier, tgt, *args, **kw)
             break
     
 class _DispatchMeta(type):
@@ -48,9 +47,9 @@ class Events(object):
                     isinstance(target.events, type) and \
                     issubclass(target.events, cls)
                 ):
-            return target.events
+            return [target]
         else:
-            return None
+            return []
         
     @classmethod
     def listen(cls, fn, identifier, target):
index a09463a4f2d0a4e7ff72232597364cdb06c3c9c7..76a89a0d03633f2cda6ab499b73a73e8a381fab9 100644 (file)
@@ -347,8 +347,9 @@ class AttributeImpl(object):
         else:
             self.is_equal = compare_function
         
+        attr = getattr(class_, key)
         for ext in util.to_list(extension or []):
-            ext._adapt_listener(self, ext)
+            ext._adapt_listener(attr, ext)
             
         if active_history:
             events.active_history = True
index ea63975178c2859e0cded49856a51c4ff0afe0fc..7ac88affd01c0de1e51fb2af3cbbc10bd496231b 100644 (file)
@@ -44,7 +44,7 @@ class HistoryTest(_fixtures.FixtureTest):
         a.user = u
         session.add(u)
 
-        self.assert_(u.addresses == [a])
+        eq_(u.addresses, [a])
         session.commit()
         session.expunge_all()