1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
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)
def __init__(self, context, request):
self.context = context
self.request = request
class BlogDefaultView(View):
def __call__(self):
return Response('Hello world from the blog %s!' % self.context.id)
class BlogWooHooView(View):
def __call__(self):
return Response('Woo hoo from the blog named %s!' % self.context.id)
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.router import make_app
root = {'blog':BlogModel('myblog')}
def get_root(environ):
return root
app = make_app(get_root)
from paste import httpserver
httpserver.serve(app, host='0.0.0.0', port='5432')
|