summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-07 22:52:39 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-07 22:52:39 +0000
commit703422d397607eefb5fe695c657e5b59991ed9c1 (patch)
tree0748952da7e533e45fe8c340869514d57c317dc6
parent3b8c3155656c694cf9c2dd84a96d758b324f7b83 (diff)
downloadpyramid-703422d397607eefb5fe695c657e5b59991ed9c1.tar.gz
pyramid-703422d397607eefb5fe695c657e5b59991ed9c1.tar.bz2
pyramid-703422d397607eefb5fe695c657e5b59991ed9c1.zip
Depend on z3c.pt.
Use ZCML to configure applications.
-rw-r--r--repoze/bfg/configure.zcml18
-rw-r--r--repoze/bfg/router.py19
-rw-r--r--repoze/bfg/sampleapp/app.py30
-rw-r--r--repoze/bfg/sampleapp/configure.zcml25
-rw-r--r--repoze/bfg/sampleapp/models.py12
-rw-r--r--setup.py2
6 files changed, 67 insertions, 39 deletions
diff --git a/repoze/bfg/configure.zcml b/repoze/bfg/configure.zcml
new file mode 100644
index 000000000..66790df9b
--- /dev/null
+++ b/repoze/bfg/configure.zcml
@@ -0,0 +1,18 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="repoze.bfg">
+
+ <include package="z3c.pt" />
+
+ <adapter
+ factory=".traversal.NaivePublishTraverser"
+ provides=".interfaces.IPublishTraverserFactory"
+ for="* *"
+ />
+
+ <adapter
+ factory=".wsgiadapter.NaiveWSGIViewAdapter"
+ provides=".interfaces.IWSGIApplicationFactory"
+ for="* *"
+ />
+
+</configure>
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 98ea81e3f..a15ac0e62 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -33,22 +33,9 @@ class Router:
app = getMultiAdapter((app, request), IWSGIApplicationFactory)
return app(environ, start_response)
-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(default_publish_traverser_factory, (None, None),
- IPublishTraverserFactory)
- gsm.registerAdapter(default_wsgi_application_factory, (None, None),
- IWSGIApplicationFactory)
+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)
diff --git a/repoze/bfg/sampleapp/app.py b/repoze/bfg/sampleapp/app.py
index f48f72141..db66cbcf8 100644
--- a/repoze/bfg/sampleapp/app.py
+++ b/repoze/bfg/sampleapp/app.py
@@ -1,23 +1,11 @@
-import UserDict
-
from zope.interface import classProvides
from zope.interface import implements
-from zope.interface import Interface
-from zope.interface import Attribute
from repoze.bfg.interfaces import IViewFactory
from repoze.bfg.interfaces import IView
from webob import Response
-class IBlogModel(Interface):
- id = Attribute('id')
-
-class BlogModel(UserDict):
- implements(IBlogModel)
- def __init__(self, id):
- self.id = id
-
class View(object):
classProvides(IViewFactory)
implements(IView)
@@ -37,21 +25,17 @@ class BlogWooHooView(View):
class DefaultView(View):
def __call__(self):
return Response('Default page, context is %s' % self.context)
-
+
+
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')
- gsm.registerAdapter(DefaultView, (None, IRequest), IViewFactory, '')
+ from repoze.bfg import sampleapp
+ from repoze.bfg.sampleapp.models import BlogModel
from repoze.bfg.router import make_app
- root = {'blog':BlogModel('myblog')}
+ blog = BlogModel('myblog')
+ root = {'blog':blog}
def get_root(environ):
return root
- app = make_app(get_root)
+ app = make_app(get_root, sampleapp)
from paste import httpserver
httpserver.serve(app, host='0.0.0.0', port='5432')
diff --git a/repoze/bfg/sampleapp/configure.zcml b/repoze/bfg/sampleapp/configure.zcml
new file mode 100644
index 000000000..58399f241
--- /dev/null
+++ b/repoze/bfg/sampleapp/configure.zcml
@@ -0,0 +1,25 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="repoze.bfg">
+
+ <include package="repoze.bfg" />
+
+ <adapter
+ factory=".app.BlogDefaultView"
+ provides="repoze.bfg.interfaces.IViewFactory"
+ for=".models.IBlogModel repoze.bfg.interfaces.IRequest"
+ />
+
+ <adapter
+ factory=".app.BlogWooHooView"
+ provides="repoze.bfg.interfaces.IViewFactory"
+ for=".models.IBlogModel repoze.bfg.interfaces.IRequest"
+ name="woohoo.html"
+ />
+
+ <adapter
+ factory=".app.DefaultView"
+ provides="repoze.bfg.interfaces.IViewFactory"
+ for="* repoze.bfg.interfaces.IRequest"
+ />
+
+</configure>
diff --git a/repoze/bfg/sampleapp/models.py b/repoze/bfg/sampleapp/models.py
new file mode 100644
index 000000000..19ef03c8c
--- /dev/null
+++ b/repoze/bfg/sampleapp/models.py
@@ -0,0 +1,12 @@
+from zope.interface import Interface
+from zope.interface import Attribute
+from zope.interface import implements
+
+class IBlogModel(Interface):
+ id = Attribute('id')
+
+class BlogModel(object):
+ implements(IBlogModel)
+ def __init__(self, id):
+ self.id = id
+
diff --git a/setup.py b/setup.py
index 736af6b34..13353b217 100644
--- a/setup.py
+++ b/setup.py
@@ -53,6 +53,7 @@ setup(name='repoze.bfg',
'zope.testing',
'WebOb',
'Paste',
+ 'z3c.pt',
],
tests_require=[
'zope.interface',
@@ -60,6 +61,7 @@ setup(name='repoze.bfg',
'zope.testing',
'WebOb',
'Paste',
+ 'z3c.pt',
],
test_suite="repoze.bfg.tests",
entry_points = """\