summaryrefslogtreecommitdiff
path: root/paste/registry.py
diff options
context:
space:
mode:
authorbbangert <devnull@localhost>2007-10-04 22:00:25 +0000
committerbbangert <devnull@localhost>2007-10-04 22:00:25 +0000
commitf01e989604815010524f92917346dcc62dbe591f (patch)
treeebc62ed1800410e89fe2d7b63606c01003f295bd /paste/registry.py
parentc028640cf084681d233e434d9350ab7beb9a9eaa (diff)
downloadpaste-f01e989604815010524f92917346dcc62dbe591f.tar.gz
Registry fix that doesn't break restorer
Diffstat (limited to 'paste/registry.py')
-rw-r--r--paste/registry.py23
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):