summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/event.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-11-06 16:43:48 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-11-06 16:43:48 -0400
commita87c8f7df266639123990e7e2f4056a257739833 (patch)
tree766cb3ec52614ce490c2aa16b7563299bf91a536 /lib/sqlalchemy/event.py
parentf23a43f694bd139329bac5603e82f2813ae2dc8f (diff)
downloadsqlalchemy-a87c8f7df266639123990e7e2f4056a257739833.tar.gz
- most tests passing on adapted MapperExtension
Diffstat (limited to 'lib/sqlalchemy/event.py')
-rw-r--r--lib/sqlalchemy/event.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/sqlalchemy/event.py b/lib/sqlalchemy/event.py
index 0f6342e6b..379c3f1dd 100644
--- a/lib/sqlalchemy/event.py
+++ b/lib/sqlalchemy/event.py
@@ -68,11 +68,12 @@ class _Dispatch(object):
object."""
for ls in other.descriptors:
- existing_listeners = getattr(self, ls.name).listeners
- existing_listener_set = set(existing_listeners)
- existing_listeners.extend([l for l
- in ls.listeners
- if l not in existing_listener_set])
+ getattr(self, ls.name).update(ls)
+ #existing_listeners = getattr(self, ls.name).listeners
+ #existing_listener_set = set(existing_listeners)
+ #existing_listeners.extend([l for l
+ # in ls.listeners
+ # if l not in existing_listener_set])
class _EventMeta(type):
"""Intercept new Event subclasses and create
@@ -198,7 +199,17 @@ class _ListenerCollection(object):
def __nonzero__(self):
return bool(self.listeners or self.parent_listeners)
-
+
+ def update(self, other):
+ """Populate from the listeners in another :class:`_Dispatch`
+ object."""
+
+ existing_listeners = self.listeners
+ existing_listener_set = set(existing_listeners)
+ existing_listeners.extend([l for l
+ in other.listeners
+ if l not in existing_listener_set])
+
def append(self, obj, target):
if obj not in self.listeners:
self.listeners.append(obj)