view webob_view/template/+package+/handlers.py @ 1:eb2cb7ebc849

moving to a handler architecture
author k0s <k0scist@gmail.com>
date Thu, 29 Oct 2009 15:08:54 -0400
parents
children 4dcb932065e4
line wrap: on
line source

from cgi import escape
from urlparse import urlparse
from webob import Response, exc

class Handler(object):
    def __init__(self, request):
        self.request = request
        self.application_path = urlparse(request.application_url)[2]

    def link(self, path=(), permanant=False):
        if isinstance(path, basestring):
            path = [ path ]
        path = [ i.strip('/') for i in path ]
        if permanant:
            application_url = [ self.request.application_url ]
        else:
            application_url = [ self.application_path ]
        path = application_url + path
        return '/'.join(path)

    def redirect(self, location):
        raise exc.HTTPSeeOther(location=location)

class Get(Handler):

    @classmethod
    def match(cls, request):
        return request.method == 'GET'

    def __call__(self):
        name = self.request.GET.get('name', 'world')
        retval = """<html><body><form method="post">Hello,
<input type="text" value="name"/></form></body></html>""" 
        return Response(content_type='text/html', 
                        body=retval % name)

class Post(Handler):

    @classmethod
    def match(cls, request):
        return request.method == 'POST'

    def __call__(self):
        name = 'foo' # XXX get from self.request.POST
        name = escape(name)
        self.redirect(self.link('/?name=%s' % name))