# HG changeset patch # User Tero Marttila # Date 1234019226 -7200 # Node ID 19ea04f4b0cdc743c46dad3dab4108a8ed39687e # Parent be954df4f0e837db5730478964ad3462bebce9fa make Page a RequestHandler in its own right, move code from FilesystemMapper diff -r be954df4f0e8 -r 19ea04f4b0cd lib/filesystem/map.py --- a/lib/filesystem/map.py Sat Feb 07 16:55:23 2009 +0200 +++ b/lib/filesystem/map.py Sat Feb 07 17:07:06 2009 +0200 @@ -3,7 +3,7 @@ from lib import http, template, map -import page, page_tree, menu +import page, page_tree class FilesystemMapper (map.Mapper) : """ @@ -113,20 +113,8 @@ page_name = request.get_page_name() # get the page handler - p = self._lookup_page(page_name) - - # bind to request - p.bind_request(request) + page = self._lookup_page(page_name) + + # pass on + return page.handle_request(request) - # render the template - response_data = template.render(self.template, - site_root_url = request.get_script_dir(), - site_page_url = request.get_page_prefix(), - page = p, - menu = menu.Menu(self, p), - ) - - # return the response - return http.Response(response_data) - - diff -r be954df4f0e8 -r 19ea04f4b0cd lib/filesystem/page.py --- a/lib/filesystem/page.py Sat Feb 07 16:55:23 2009 +0200 +++ b/lib/filesystem/page.py Sat Feb 07 17:07:06 2009 +0200 @@ -7,7 +7,9 @@ import os, os.path import time -from lib import http, template, config +from lib import http, handler, template, config + +import menu class PageError (http.ResponseError) : """ @@ -17,7 +19,7 @@ pass # XXX: should inherit from PageInfo -class Page (object) : +class Page (handler.RequestHandler) : """ This object represents the information about our attempt to render some specific page """ @@ -42,9 +44,6 @@ self.url_tail = url_tail self.charset = charset - # unbound - self.request = None - # sub-init self._init() @@ -55,13 +54,6 @@ pass - def bind_request (self, request) : - """ - Bind this page-render to the given request - """ - - self.request = request - @property def title (self) : """ @@ -100,6 +92,23 @@ timestamp = os.stat(self.path).st_mtime return time.strftime(config.DATETIME_FMT, time.gmtime(timestamp)) + + def handle_request (self, request) : + """ + Renders the fs's layout template with this page + menu + """ + + # render the template + response_data = template.render(self.fs.template, + request = request, + site_root_url = request.get_script_dir(), + site_page_url = request.get_page_prefix(), + page = self, + menu = menu.Menu(self.fs, self), + ) + + # return the response + return http.Response(response_data) class HTMLPage (Page) : """ @@ -126,7 +135,6 @@ """ return template.TemplateLoader.render_file(self.path, - request = self.request, - page_tree = self.fs.tree + page_tree = self.fs.tree, )