[Repoze-checkins] r1303 - in repoze.bfg/trunk/repoze/bfg: . tests tests/fixtureapp tests/fixtureapp/templates

Chris McDonough chrism at agendaless.com
Sat Jul 12 18:39:52 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Sat Jul 12 18:39:52 2008
New Revision: 1303

Log:
Speculative: cause routers to accept an app_context (the zcml configuration context), so we can later enable an app-local component registry.


Added:
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/__init__.py   (contents, props changed)
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/configure.zcml   (contents, props changed)
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/models.py   (contents, props changed)
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/templates/
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/templates/fixture.pt   (contents, props changed)
   repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/views.py   (contents, props changed)
Modified:
   repoze.bfg/trunk/repoze/bfg/configure.zcml
   repoze.bfg/trunk/repoze/bfg/router.py
   repoze.bfg/trunk/repoze/bfg/tests/test_router.py

Modified: repoze.bfg/trunk/repoze/bfg/configure.zcml
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/configure.zcml	(original)
+++ repoze.bfg/trunk/repoze/bfg/configure.zcml	Sat Jul 12 18:39:52 2008
@@ -4,6 +4,14 @@
   <include package="z3c.pt" />
   <include package="zope.security" file="meta.zcml"/>
 
+  <!-- enable when we figure out app-local registries
+  <adapter
+     factory=".router.app_component_registry"
+     provides="zope.component.interfaces.IComponentLookup"
+     for="zope.configuration.interfaces.IConfigurationContext"
+     />
+  -->
+
   <permission
       id="repoze.view"
       title="View"

Modified: repoze.bfg/trunk/repoze/bfg/router.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/router.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/router.py	Sat Jul 12 18:39:52 2008
@@ -13,8 +13,9 @@
 _marker = ()
 
 class Router:
-    def __init__(self, root_policy):
+    def __init__(self, root_policy, app_context):
         self.root_policy = root_policy
+        self.app_context = app_context
 
     def __call__(self, environ, start_response):
         request = Request(environ)
@@ -34,9 +35,18 @@
                                   IWSGIApplicationFactory)
         return app(environ, start_response)
 
+# enable the below when we figure out app-local registries
+
+## def app_component_registry(app_context):
+##     registry = getattr(app_context, 'registry', None)
+##     if registry is None:
+##         from zope.component.registry import Components
+##         app_context.registry = Components()
+##     return app_context.registry
+
 def make_app(root_policy, package=None, filename='configure.zcml'):
     import zope.configuration.xmlconfig
-    zope.configuration.xmlconfig.file(filename, package=package)
-    return Router(root_policy)
+    context = zope.configuration.xmlconfig.file(filename, package=package)
+    return Router(root_policy, context)
 
     

Added: repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/__init__.py
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/__init__.py	Sat Jul 12 18:39:52 2008
@@ -0,0 +1 @@
+# fixture application

Added: repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/configure.zcml
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/configure.zcml	Sat Jul 12 18:39:52 2008
@@ -0,0 +1,14 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.repoze.org/browser"
+	           i18n_domain="repoze.bfg">
+
+  <include package="repoze.bfg" />
+
+  <browser:page
+      for=".models.IFixture"
+      class=".views.FixtureView"
+      template="templates/fixture.pt"
+      permission="repoze.view"
+      />
+
+</configure>

Added: repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/models.py
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/models.py	Sat Jul 12 18:39:52 2008
@@ -0,0 +1,5 @@
+from zope.interface import Interface
+
+class IFixture(Interface):
+    pass
+

Added: repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/templates/fixture.pt
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/templates/fixture.pt	Sat Jul 12 18:39:52 2008
@@ -0,0 +1,6 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+     xmlns:tal="http://xml.zope.org/namespaces/tal">
+<head></head>
+<body>
+</body>
+</html>

Added: repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/views.py
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/tests/fixtureapp/views.py	Sat Jul 12 18:39:52 2008
@@ -0,0 +1,8 @@
+class FixtureView(object):
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def __call__(self):
+        pass
+    

Modified: repoze.bfg/trunk/repoze/bfg/tests/test_router.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/tests/test_router.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/tests/test_router.py	Sat Jul 12 18:39:52 2008
@@ -51,7 +51,8 @@
         context = DummyContext()
         traversalfactory = make_traversal_factory(context, '', [])
         self._registerTraverserFactory(traversalfactory, '', None, None)
-        router = self._makeOne(rootpolicy)
+        app_context = make_appcontext()
+        router = self._makeOne(rootpolicy, app_context)
         start_response = DummyStartResponse()
         result = router(environ, start_response)
         headers = start_response.headers
@@ -71,7 +72,8 @@
         self._registerTraverserFactory(traversalfactory, '', None, None)
         self._registerViewFactory(viewfactory, '', None, None)
         self._registerWSGIFactory(wsgifactory, '', None, None, None)
-        router = self._makeOne(rootpolicy)
+        app_context = make_appcontext()
+        router = self._makeOne(rootpolicy, app_context)
         start_response = DummyStartResponse()
         result = router(environ, start_response)
         self.assertEqual(result, ['Hello world'])
@@ -92,7 +94,8 @@
         self._registerTraverserFactory(traversalfactory, '', None, None)
         self._registerViewFactory(viewfactory, 'foo', None, None)
         self._registerWSGIFactory(wsgifactory, '', None, None, None)
-        router = self._makeOne(rootpolicy)
+        app_context = make_appcontext()
+        router = self._makeOne(rootpolicy, app_context)
         start_response = DummyStartResponse()
         result = router(environ, start_response)
         self.assertEqual(result, ['Hello world'])
@@ -119,7 +122,8 @@
         self._registerTraverserFactory(traversalfactory, '', None, None)
         self._registerViewFactory(viewfactory, '', IContext, IRequest)
         self._registerWSGIFactory(wsgifactory, '', None, None, None)
-        router = self._makeOne(rootpolicy)
+        app_context = make_appcontext()
+        router = self._makeOne(rootpolicy, app_context)
         start_response = DummyStartResponse()
         result = router(environ, start_response)
         self.assertEqual(result, ['Hello world'])
@@ -148,12 +152,26 @@
         self._registerTraverserFactory(traversalfactory, '', None, None)
         self._registerViewFactory(viewfactory, '', IContext, IRequest)
         self._registerWSGIFactory(wsgifactory, '', None, None, None)
-        router = self._makeOne(rootpolicy)
+        app_context = make_appcontext()
+        router = self._makeOne(rootpolicy, app_context)
         start_response = DummyStartResponse()
         result = router(environ, start_response)
         self.failUnless('404' in result[0])
         self.assertEqual(start_response.status, '404 Not Found')
 
+class MakeAppTests(unittest.TestCase, PlacelessSetup):
+    def _getFUT(self):
+        from repoze.bfg.router import make_app
+        return make_app
+
+    def test_sampleapp(self):
+        from repoze.bfg.tests import fixtureapp
+        make_app = self._getFUT()
+        rootpolicy = make_rootpolicy(None)
+        app = make_app(rootpolicy, fixtureapp)
+        self.assertEqual(app.app_context.package, fixtureapp)
+        self.assertEqual(app.root_policy, rootpolicy)
+
 class DummyContext:
     pass
 
@@ -198,6 +216,13 @@
         return root
     return rootpolicy
 
+def make_appcontext():
+    from zope.configuration.interfaces import IConfigurationContext
+    from zope.interface import directlyProvides
+    app_context = DummyContext()
+    directlyProvides(app_context, IConfigurationContext)
+    return app_context
+
 class DummyStartResponse:
     status = ()
     headers = ()


More information about the Repoze-checkins mailing list