summaryrefslogtreecommitdiff
path: root/repoze/bfg/sampleapp/app.py
blob: f48f72141d3ce4ee9c8be866385651d9cb1ab699 (plain)
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')