lib/handler.py
branchsites
changeset 31 107062ebb6f9
parent 30 a86a25a9f75b
equal deleted inserted replaced
30:a86a25a9f75b 31:107062ebb6f9
     1 """
     1 """
     2     The actual application behaviour, i.e. generating a Response from a Request :)
     2     The actual application behaviour, i.e. generating a Response from a Request :)
     3 """
     3 """
     4 
     4 
     5 class Handler (object) :
     5 class RequestHandler (object) :
     6     """
     6     """
     7         A handler handles a Request, returning a Response
     7         A handler handles a Request, returning a Response
     8     """
     8     """
     9 
     9 
    10     def __init__ (self, func, *args, **kwargs) :
    10     def __init__ (self, func, *args, **kwargs) :
    13         self.kwargs = kwargs
    13         self.kwargs = kwargs
    14     
    14     
    15     def handle_request (self, request) :
    15     def handle_request (self, request) :
    16         """
    16         """
    17             Handle the request, returning a Response object
    17             Handle the request, returning a Response object
       
    18 
       
    19             XXX: rename to __call__ kplzthx
    18         """
    20         """
    19 
    21 
    20         return self.func(request, *self.args, **self.kwargs)
    22         return self.func(request, *self.args, **self.kwargs)
    21 
    23 
    22 # fs handler
       
    23 import http, page, menu, template
       
    24 
    24 
    25 def handle_request (request) :
       
    26     """
       
    27         Take the Request, and return a Response
       
    28     """
       
    29 
       
    30     # determine the page name
       
    31     page_name = request.get_page_name()
       
    32 
       
    33     # get the page handler
       
    34     p = page.lookup(page_name)
       
    35 
       
    36     # bind to request
       
    37     p.bind_request(request)
       
    38 
       
    39     # render the template
       
    40     response_data = template.render("layout",
       
    41         site_root_url   = request.get_script_dir(),
       
    42         site_page_url   = request.get_page_prefix(),
       
    43         page            = p,
       
    44         menu            = menu.Menu(p),
       
    45     )
       
    46     
       
    47     # return the response
       
    48     return http.Response(response_data)
       
    49