summaryrefslogtreecommitdiff
path: root/repoze/bfg/registry.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-05-27 04:52:51 +0000
committerChris McDonough <chrism@agendaless.com>2009-05-27 04:52:51 +0000
commita1a9fb7128c935848b17c0ce6586991098a17f07 (patch)
tree5160f28be92202033c693caa335f8b9cda3c6379 /repoze/bfg/registry.py
parent08ead74d05e25f58c83712f6f8651484ddc983d0 (diff)
downloadpyramid-a1a9fb7128c935848b17c0ce6586991098a17f07.tar.gz
pyramid-a1a9fb7128c935848b17c0ce6586991098a17f07.tar.bz2
pyramid-a1a9fb7128c935848b17c0ce6586991098a17f07.zip
Merge authchanges branch to trunk.
Diffstat (limited to 'repoze/bfg/registry.py')
-rw-r--r--repoze/bfg/registry.py41
1 files changed, 8 insertions, 33 deletions
diff --git a/repoze/bfg/registry.py b/repoze/bfg/registry.py
index 0cf8e306b..cacf9806c 100644
--- a/repoze/bfg/registry.py
+++ b/repoze/bfg/registry.py
@@ -10,6 +10,8 @@ from zope.component.registry import Components
from zope.deprecation import deprecated
+from repoze.bfg.threadlocal import manager
+
from repoze.bfg.zcml import zcml_configure
from repoze.bfg.settings import Settings # alias for deprecation below
@@ -48,35 +50,8 @@ class Registry(Components):
for ignored in self.subscribers(events, None):
""" """
-class ThreadLocalRegistryManager(threading.local):
- def __init__(self):
- self.stack = []
-
- def push(self, registry):
- self.stack.append(registry)
-
- set = push # backwards compatibility
-
- def pop(self):
- if self.stack:
- return self.stack.pop()
-
- def get(self):
- try:
- return self.stack[-1]
- except IndexError:
- return getGlobalSiteManager()
-
- def clear(self):
- self.stack[:] = []
-
-registry_manager = ThreadLocalRegistryManager()
-
-def setRegistryManager(manager): # for unit tests
- global registry_manager
- old_registry_manager = registry_manager
- registry_manager = manager
- return old_registry_manager
+def get_registry():
+ return manager.get()['registry']
def populateRegistry(registry, filename, package, lock=threading.Lock()):
@@ -95,19 +70,19 @@ def populateRegistry(registry, filename, package, lock=threading.Lock()):
registry."""
lock.acquire()
- registry_manager.push(registry)
+ manager.push({'registry':registry, 'request':None})
try:
original_getSiteManager.sethook(getSiteManager)
- zope.component.getGlobalSiteManager = registry_manager.get
+ zope.component.getGlobalSiteManager = get_registry
zcml_configure(filename, package)
finally:
zope.component.getGlobalSiteManager = getGlobalSiteManager
lock.release()
- registry_manager.pop()
+ manager.pop()
def getSiteManager(context=None):
if context is None:
- return registry_manager.get()
+ return get_registry()
else:
try:
return IComponentLookup(context)