"""
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)