summaryrefslogtreecommitdiff
path: root/repoze/bfg/router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-18 23:38:47 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-18 23:38:47 +0000
commit62267e01d6eeaf8de871487898ad1ce02878c29a (patch)
tree234346245e58993c27e139906ee7a19a7b67a8e4 /repoze/bfg/router.py
parent58afb33d70dece410b998a9c064eba42e3f843d7 (diff)
downloadpyramid-62267e01d6eeaf8de871487898ad1ce02878c29a.tar.gz
pyramid-62267e01d6eeaf8de871487898ad1ce02878c29a.tar.bz2
pyramid-62267e01d6eeaf8de871487898ad1ce02878c29a.zip
Merge "routesmapper branch" to trunk.
Diffstat (limited to 'repoze/bfg/router.py')
-rw-r--r--repoze/bfg/router.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 817d5422a..849b40d7e 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -5,6 +5,7 @@ from zope.component import getAdapter
from zope.component import getUtility
from zope.component import queryUtility
from zope.component.event import dispatch
+from zope.component.registry import Components
from zope.interface import alsoProvides
from zope.interface import implements
@@ -21,6 +22,7 @@ from repoze.bfg.interfaces import ILogger
from repoze.bfg.interfaces import ITraverserFactory
from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IRequestFactory
+from repoze.bfg.interfaces import IRoutesMapper
from repoze.bfg.interfaces import HTTP_METHOD_INTERFACES
from repoze.bfg.interfaces import IRouter
@@ -30,9 +32,11 @@ from repoze.bfg.interfaces import ISettings
from repoze.bfg.log import make_stream_logger
from repoze.bfg.registry import registry_manager
-from repoze.bfg.registry import makeRegistry
+from repoze.bfg.registry import populateRegistry
from repoze.bfg.settings import Settings
+from repoze.bfg.urldispatch import RoutesRootFactory
+
from repoze.bfg.view import render_view_to_response
from repoze.bfg.view import view_execution_permitted
@@ -140,13 +144,28 @@ def make_app(root_factory, package=None, filename='configure.zcml',
e.g. ``{'reload_templates':True}``"""
if options is None:
options = {}
-
- registry = makeRegistry(filename, package)
- registry.registerUtility(root_factory, IRootFactory)
+ regname = filename
+ if package:
+ regname = package.__name__
+ registry = Components(regname)
debug_logger = make_stream_logger('repoze.bfg.debug', sys.stderr)
registry.registerUtility(debug_logger, ILogger, 'repoze.bfg.debug')
settings = Settings(options)
registry.registerUtility(settings, ISettings)
+ mapper = RoutesRootFactory(root_factory)
+ registry.registerUtility(mapper, IRoutesMapper)
+ populateRegistry(registry, filename, package)
+ if mapper.has_routes():
+ # if the user had any <route/> statements in his configuration,
+ # use the RoutesRootFactory as the root factory
+ root_factory = mapper
+ else:
+ # otherwise, use only the supplied root_factory (unless it's None)
+ if root_factory is None:
+ raise ValueError(
+ 'root_factory (aka get_root) was None and no routes connected')
+
+ registry.registerUtility(root_factory, IRootFactory)
app = Router(registry)
try: