diff options
author | bbangert <devnull@localhost> | 2007-10-04 22:00:25 +0000 |
---|---|---|
committer | bbangert <devnull@localhost> | 2007-10-04 22:00:25 +0000 |
commit | f01e989604815010524f92917346dcc62dbe591f (patch) | |
tree | ebc62ed1800410e89fe2d7b63606c01003f295bd /paste/registry.py | |
parent | c028640cf084681d233e434d9350ab7beb9a9eaa (diff) | |
download | paste-f01e989604815010524f92917346dcc62dbe591f.tar.gz |
Registry fix that doesn't break restorer
Diffstat (limited to 'paste/registry.py')
-rw-r--r-- | paste/registry.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/paste/registry.py b/paste/registry.py index a496fae..288fdda 100644 --- a/paste/registry.py +++ b/paste/registry.py @@ -290,9 +290,13 @@ class Registry(object): def register(self, stacked, obj): """Register an object with a StackedObjectProxy""" - stacked._push_object(obj) myreglist = self.reglist[-1] - myreglist.setdefault(id(stacked), []).append((stacked, obj)) + stacked_id = id(stacked) + if stacked_id in myreglist: + stacked._pop_object(myreglist[stacked_id]) + del myreglist[stacked_id] + stacked._push_object(obj) + myreglist[stacked_id] = (stacked, obj) def replace(self, stacked, obj): """Replace the object referenced by a StackedObjectProxy with a @@ -302,19 +306,18 @@ class Registry(object): be registered. """ myreglist = self.reglist[-1] - if id(stacked) in myreglist: - for stacked, obj in myreglist[id(stacked)]: - stacked._pop_object(obj) - del myreglist[id(stacked)] + stacked_id = id(stacked) + if stacked_id in myreglist: + stacked._pop_object(myreglist[stacked_id]) + del myreglist[stacked_id] stacked._push_object(obj) - myreglist.setdefault(id(stacked), []).append((stacked, obj)) + myreglist[stacked_id] = (stacked, obj) def cleanup(self): """Remove all objects from all StackedObjectProxy instances that were tracked at this Registry context""" - for id, lst in self.reglist[-1].iteritems(): - for stacked, obj in lst: - stacked._pop_object(obj) + for stacked, obj in self.reglist[-1].itervalues(): + stacked._pop_object(obj) self.reglist.pop() class RegistryManager(object): |