From 15a3c6f561563eb53ff1cc3637fc6afa75da9e89 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 20 Nov 2009 05:38:38 +0000 Subject: Passable stab at supporting an imperative mode. ZCML directives which accept paths now register absolute paths, while imperative registrations now register resource specifications. --- repoze/bfg/zcml.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'repoze/bfg/zcml.py') diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index 1767880bd..f801c62ac 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -24,12 +24,9 @@ from repoze.bfg.authentication import RepozeWho1AuthenticationPolicy from repoze.bfg.authentication import RemoteUserAuthenticationPolicy from repoze.bfg.authentication import AuthTktAuthenticationPolicy from repoze.bfg.authorization import ACLAuthorizationPolicy -from repoze.bfg.path import package_name from repoze.bfg.request import route_request_iface -from repoze.bfg.resource import resource_spec -from repoze.bfg.static import StaticRootFactory from repoze.bfg.threadlocal import get_current_registry -from repoze.bfg.view import static as static_view +from repoze.bfg.static import StaticRootFactory ###################### directives ########################## @@ -163,8 +160,7 @@ def view( request_type = _context.resolve(request_type) if renderer and '.' in renderer: - zcml_package = package_name(_context.resolve('.')) - renderer = resource_spec(renderer, zcml_package) + renderer = _context.path(renderer) def register(): config = get_configurator(reg) @@ -243,8 +239,7 @@ def route(_context, name, path, view=None, view_for=None, view_permission = view_permission or permission view_renderer = view_renderer or renderer if view_renderer and '.' in view_renderer: - zcml_package = package_name(_context.resolve('.')) - view_renderer = resource_spec(view_renderer, zcml_package) + view_renderer = _context.path(view_renderer) def register(): config = get_configurator(reg) @@ -321,8 +316,7 @@ class SystemViewHandler(object): def __call__(self, _context, view=None, attr=None, renderer=None, wrapper=None): if renderer and '.' in renderer: - renderer = resource_spec( - renderer, package_name(_context.resolve('.'))) + renderer = _context.path(renderer) def register(iface=self.iface): reg = get_current_registry() @@ -483,10 +477,22 @@ class IStaticDirective(Interface): def static(_context, name, path, cache_max_age=3600): """ Handle ``static`` ZCML directives """ - path = resource_spec(path, package_name(_context.resolve('.'))) - view = static_view(path, cache_max_age=cache_max_age) - route(_context, name, "%s*subpath" % name, view=view, - view_for=StaticRootFactory, factory=StaticRootFactory(path)) + abspath = _context.path(path) + reg = get_current_registry() + config = get_configurator(reg) + + _context.action( + discriminator = ('route', name, False, None, None, None, None, None), + callable=config.static, + args = (name, abspath, cache_max_age, _context.info), + ) + + _context.action( + discriminator = ( + 'view', StaticRootFactory, '', None, IView, None, None, None, + name, None, None, None, None, None, + ) + ) class IScanDirective(Interface): package = GlobalObject( -- cgit v1.2.3