lib/handler.py
author Tero Marttila <terom@fixme.fi>
Sat, 07 Feb 2009 06:54:52 +0200
branchsites
changeset 30 a86a25a9f75b
parent 10 d83b10c210e3
child 31 107062ebb6f9
permissions -rw-r--r--
route requests through sites/www.qmsk.net, although still hardcoded
"""
    The actual application behaviour, i.e. generating a Response from a Request :)
"""

class Handler (object) :
    """
        A handler handles a Request, returning a Response
    """

    def __init__ (self, func, *args, **kwargs) :
        self.func = func
        self.args = args
        self.kwargs = kwargs
    
    def handle_request (self, request) :
        """
            Handle the request, returning a Response object
        """

        return self.func(request, *self.args, **self.kwargs)

# fs handler
import http, page, menu, template

def handle_request (request) :
    """
        Take the Request, and return a Response
    """

    # determine the page name
    page_name = request.get_page_name()

    # get the page handler
    p = page.lookup(page_name)

    # bind to request
    p.bind_request(request)

    # render the template
    response_data = template.render("layout",
        site_root_url   = request.get_script_dir(),
        site_page_url   = request.get_page_prefix(),
        page            = p,
        menu            = menu.Menu(p),
    )
    
    # return the response
    return http.Response(response_data)