diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-19 10:44:55 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-19 10:44:55 +0000 |
| commit | eac7c470021b647d63c2e2af8acd6cebd738f2a4 (patch) | |
| tree | 6d04102c9442c0dd67a26d002ff89ae51b454993 /repoze/bfg/router.py | |
| parent | 4dd55a50a7ed559748661f369313030773d13e75 (diff) | |
| download | pyramid-eac7c470021b647d63c2e2af8acd6cebd738f2a4.tar.gz pyramid-eac7c470021b647d63c2e2af8acd6cebd738f2a4.tar.bz2 pyramid-eac7c470021b647d63c2e2af8acd6cebd738f2a4.zip | |
Rearrange things to try to avoid circular import deps.
Diffstat (limited to 'repoze/bfg/router.py')
| -rw-r--r-- | repoze/bfg/router.py | 43 |
1 files changed, 11 insertions, 32 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py index b317c9b35..7edf40620 100644 --- a/repoze/bfg/router.py +++ b/repoze/bfg/router.py @@ -1,11 +1,7 @@ -from zope.component.event import dispatch - from zope.interface import implements from zope.interface import providedBy from zope.interface import alsoProvides -from zope.component import getSiteManager - from repoze.bfg.interfaces import IForbiddenView from repoze.bfg.interfaces import ILogger from repoze.bfg.interfaces import INotFoundView @@ -17,24 +13,18 @@ from repoze.bfg.interfaces import ISettings from repoze.bfg.interfaces import ITraverser from repoze.bfg.interfaces import IView -from repoze.bfg.configuration import DefaultRootFactory -from repoze.bfg.configuration import Configurator from repoze.bfg.events import AfterTraversal from repoze.bfg.events import NewRequest from repoze.bfg.events import NewResponse -from repoze.bfg.events import WSGIApplicationCreatedEvent from repoze.bfg.exceptions import Forbidden from repoze.bfg.exceptions import NotFound -from repoze.bfg.registry import Registry from repoze.bfg.request import Request from repoze.bfg.threadlocal import manager -from repoze.bfg.threadlocal import get_current_registry +from repoze.bfg.traversal import DefaultRootFactory from repoze.bfg.traversal import ModelGraphTraverser from repoze.bfg.view import default_forbidden_view from repoze.bfg.view import default_notfound_view -_marker = object() - class Router(object): """ The main repoze.bfg WSGI application. """ implements(IRouter) @@ -43,9 +33,6 @@ class Router(object): threadlocal_manager = manager def __init__(self, registry): - # executing sethook means we're taking over getSiteManager for - # the lifetime of this process - getSiteManager.sethook(get_current_registry) q = registry.queryUtility self.logger = q(ILogger, 'repoze.bfg.debug') self.notfound_view = q(INotFoundView, default=default_notfound_view) @@ -162,10 +149,10 @@ class Router(object): finally: manager.pop() -# note that ``options`` is a b/w compat alias for ``settings`` +# note that ``options`` is a b/w compat alias for ``settings`` and +# ``Configurator`` is a testing dep inj def make_app(root_factory, package=None, filename='configure.zcml', - settings=None, options=None, Configurator=Configurator, - Router=Router, Registry=Registry, manager=manager): + settings=None, options=None, Configurator=None): """ Return a Router object, representing a fully configured ``repoze.bfg`` WSGI application. @@ -202,20 +189,12 @@ def make_app(root_factory, package=None, filename='configure.zcml', parameter ``options`` is a backwards compatibility alias for the ``settings`` keyword parameter. """ + if Configurator is None: + from repoze.bfg.configuration import Configurator settings = settings or options - registry = Registry('make_app') - config = Configurator(registry) - config.default_configuration(root_factory, package=package, - filename=filename, settings=settings) - app = Router(registry) - # We push the registry on to the stack here in case any ZCA API is - # used in listeners subscribed to the WSGIApplicationCreatedEvent - # we send. - manager.push({'registry':registry, 'request':None}) - try: - # use dispatch here instead of registry.notify to make unit - # tests possible - dispatch(WSGIApplicationCreatedEvent(app)) - finally: - manager.pop() + config = Configurator() + config.declarative(root_factory, package=package, + filename=filename, settings=settings) + app = config.make_wsgi_app() return app + |
