summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-11-25 22:29:00 +0000
committerChris McDonough <chrism@agendaless.com>2009-11-25 22:29:00 +0000
commit0727ab00ad2c8ce3db55ff436f6071e5fa7d850f (patch)
treeff4b44ac763a4dd413083b8c7a6380949c11520e
parent6cd3830d392d19b826ea0d48e5a06bb230d16f91 (diff)
downloadpyramid-0727ab00ad2c8ce3db55ff436f6071e5fa7d850f.tar.gz
pyramid-0727ab00ad2c8ce3db55ff436f6071e5fa7d850f.tar.bz2
pyramid-0727ab00ad2c8ce3db55ff436f6071e5fa7d850f.zip
We need to hook the zca before loading ZCML.
-rw-r--r--repoze/bfg/configuration.py18
1 files changed, 8 insertions, 10 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index f93e3e754..76f1b5b60 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -6,14 +6,9 @@ import inspect
from webob import Response
-import zope.component
-
from zope.configuration.exceptions import ConfigurationError
from zope.configuration import xmlconfig
-from zope.component import getGlobalSiteManager
-from zope.component import getSiteManager
-
from zope.interface import Interface
from zope.interface import implementedBy
from zope.interface.interfaces import IInterface
@@ -140,8 +135,10 @@ class Configurator(object):
causing ``zope.component`` thread local API functions such as
``getUtility`` and ``getMultiAdapter`` to use the
:mod:`repoze.bfg` registry instead of the global Zope registry
- during the scope of every :mod:`repoze.bfg` :term:`request`. By
- default, this is ``False``. """
+ during the scope of every :mod:`repoze.bfg` :term:`request`. It
+ typically also means registrations made via ZCML will end up in
+ the :mod:`repoze.bfg` registry instead of the global Zope
+ registry. By default, this is ``False``. """
def __init__(self, registry=None, package=None, settings=None,
root_factory=None, zcml_file=None,
@@ -166,11 +163,12 @@ class Configurator(object):
authorization_policy)
for name, renderer in renderers:
self.add_renderer(name, renderer)
- if zcml_file is not None:
- self.load_zcml(zcml_file)
if hook_zca:
+ from zope.component import getSiteManager
getSiteManager.sethook(get_current_registry)
self.registry.zca_hooked = True
+ if zcml_file is not None:
+ self.load_zcml(zcml_file)
def _set_settings(self, mapping):
settings = Settings(mapping or {})
@@ -300,7 +298,7 @@ class Configurator(object):
from repoze.bfg.router import Router # avoid circdep
app = Router(self.registry)
# We push the registry on to the stack here in case any code
- # that depends on the registry threadlocal APIis used in
+ # that depends on the registry threadlocal APIs used in
# listeners subscribed to the WSGIApplicationCreatedEvent.
manager.push({'registry':self.registry, 'request':None})
try: