[Repoze-checkins] r1237 - in repoze.bfg/trunk/repoze/bfg: . sampleapp

Chris McDonough chrism at agendaless.com
Mon Jul 7 01:07:09 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Mon Jul  7 01:07:09 2008
New Revision: 1237

Log:
Add a sample app.


Added:
   repoze.bfg/trunk/repoze/bfg/sampleapp/
   repoze.bfg/trunk/repoze/bfg/sampleapp/__init__.py   (contents, props changed)
   repoze.bfg/trunk/repoze/bfg/sampleapp/app.py   (contents, props changed)
Modified:
   repoze.bfg/trunk/repoze/bfg/router.py

Modified: repoze.bfg/trunk/repoze/bfg/router.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/router.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/router.py	Mon Jul  7 01:07:09 2008
@@ -1,4 +1,3 @@
-from zope.component import getGlobalSiteManager
 from zope.component import getMultiAdapter
 from zope.component import queryMultiAdapter
 from zope.interface import directlyProvides
@@ -34,12 +33,22 @@
             app = getMultiAdapter((app, request), IWSGIApplicationFactory)
         return app(environ, start_response)
 
-def make_app(**config):
-    from repoze.bfg.traversal import NaivePublishTraverser
-    from repoze.bfg.wsgiadapter import NaiveWSGIViewAdapter
+def make_app(root_policy,
+             default_publish_traverser_factory=None,
+             default_wsgi_application_factory=None
+             ):
+    if default_publish_traverser_factory is None:
+        from repoze.bfg.traversal import NaivePublishTraverser
+        default_publish_traverser_factory = NaivePublishTraverser
+    if default_wsgi_application_factory is None:
+        from repoze.bfg.wsgiadapter import NaiveWSGIViewAdapter
+        default_wsgi_application_factory = NaiveWSGIViewAdapter
+    from zope.component import getGlobalSiteManager
     gsm = getGlobalSiteManager()
-    gsm.registerAdapter(NaivePublishTraverser, (None, None),
+    gsm.registerAdapter(default_publish_traverser_factory, (None, None),
                         IPublishTraverserFactory)
-    gsm.registerAdapter(NaiveWSGIViewAdapter, (None, None),
+    gsm.registerAdapter(default_wsgi_application_factory, (None, None),
                         IWSGIApplicationFactory)
+    return Router(root_policy)
+
     

Added: repoze.bfg/trunk/repoze/bfg/sampleapp/__init__.py
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/sampleapp/__init__.py	Mon Jul  7 01:07:09 2008
@@ -0,0 +1 @@
+# a package

Added: repoze.bfg/trunk/repoze/bfg/sampleapp/app.py
==============================================================================
--- (empty file)
+++ repoze.bfg/trunk/repoze/bfg/sampleapp/app.py	Mon Jul  7 01:07:09 2008
@@ -0,0 +1,52 @@
+from zope.interface import classProvides
+from zope.interface import implements
+from zope.interface import Interface
+
+from repoze.bfg.interfaces import IViewFactory
+from repoze.bfg.interfaces import IView
+
+from webob import Response
+
+class IBlogModel(Interface):
+    pass
+
+class BlogModel:
+    implements(IBlogModel)
+
+class BlogDefaultView(object):
+    classProvides(IViewFactory)
+    implements(IView)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def __call__(self):
+        return Response('Hello world!')
+
+class BlogWooHooView(object):
+    classProvides(IViewFactory)
+    implements(IView)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def __call__(self):
+        return Response('Woo hoo!')
+    
+if __name__ == '__main__':
+    from repoze.bfg.interfaces import IViewFactory
+    from repoze.bfg.interfaces import IRequest
+    from zope.component import getGlobalSiteManager
+    gsm = getGlobalSiteManager()
+    gsm.registerAdapter(BlogDefaultView, (IBlogModel, IRequest), IViewFactory)
+    gsm.registerAdapter(BlogWooHooView, (IBlogModel, IRequest), IViewFactory,
+                        name='woohoo.html')
+    from repoze.bfg.router import make_app
+    def get_root(environ):
+        return {'blog':BlogModel()}
+    app = make_app(get_root)
+    from paste import httpserver
+    httpserver.serve(app, host='0.0.0.0', port='5432')
+    


More information about the Repoze-checkins mailing list