summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-07 05:07:09 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-07 05:07:09 +0000
commit8251b8af234bfa172316d19350309728d89473e1 (patch)
tree2eec8a409d50ee3997312d17a4536e8ffeab754b
parent7de404bb4af2744a64c13e31a780fc0229b8f9e5 (diff)
downloadpyramid-8251b8af234bfa172316d19350309728d89473e1.tar.gz
pyramid-8251b8af234bfa172316d19350309728d89473e1.tar.bz2
pyramid-8251b8af234bfa172316d19350309728d89473e1.zip
Add a sample app.
-rw-r--r--repoze/bfg/router.py21
-rw-r--r--repoze/bfg/sampleapp/__init__.py1
-rw-r--r--repoze/bfg/sampleapp/app.py52
3 files changed, 68 insertions, 6 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 4f73ddf32..98ea81e3f 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -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 @@ class Router:
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)
+
diff --git a/repoze/bfg/sampleapp/__init__.py b/repoze/bfg/sampleapp/__init__.py
new file mode 100644
index 000000000..ef5fe8b12
--- /dev/null
+++ b/repoze/bfg/sampleapp/__init__.py
@@ -0,0 +1 @@
+# a package
diff --git a/repoze/bfg/sampleapp/app.py b/repoze/bfg/sampleapp/app.py
new file mode 100644
index 000000000..dbc77d501
--- /dev/null
+++ b/repoze/bfg/sampleapp/app.py
@@ -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')
+