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