From 703422d397607eefb5fe695c657e5b59991ed9c1 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 7 Jul 2008 22:52:39 +0000 Subject: Depend on z3c.pt. Use ZCML to configure applications. --- repoze/bfg/configure.zcml | 18 ++++++++++++++++++ repoze/bfg/router.py | 19 +++---------------- repoze/bfg/sampleapp/app.py | 30 +++++++----------------------- repoze/bfg/sampleapp/configure.zcml | 25 +++++++++++++++++++++++++ repoze/bfg/sampleapp/models.py | 12 ++++++++++++ setup.py | 2 ++ 6 files changed, 67 insertions(+), 39 deletions(-) create mode 100644 repoze/bfg/configure.zcml create mode 100644 repoze/bfg/sampleapp/configure.zcml create mode 100644 repoze/bfg/sampleapp/models.py 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 @@ + + + + + + + + + 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 @@ + + + + + + + + + + + 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 = """\ -- cgit v1.2.3