diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-11-06 16:43:48 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-11-06 16:43:48 -0400 |
| commit | a87c8f7df266639123990e7e2f4056a257739833 (patch) | |
| tree | 766cb3ec52614ce490c2aa16b7563299bf91a536 /lib/sqlalchemy/event.py | |
| parent | f23a43f694bd139329bac5603e82f2813ae2dc8f (diff) | |
| download | sqlalchemy-a87c8f7df266639123990e7e2f4056a257739833.tar.gz | |
- most tests passing on adapted MapperExtension
Diffstat (limited to 'lib/sqlalchemy/event.py')
| -rw-r--r-- | lib/sqlalchemy/event.py | 23 |
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) |
