lib/page.py
changeset 10 d83b10c210e3
parent 9 2a47b00f60b0
child 11 fa216534ae45
--- a/lib/page.py	Fri Feb 06 23:21:24 2009 +0200
+++ b/lib/page.py	Fri Feb 06 23:55:23 2009 +0200
@@ -65,6 +65,10 @@
             Add item to pages list
         """
 
+        # remove index from URL
+        if url.endswith('/index') or url == 'index' :
+            url = url[:-len('/index')]
+
         self.pages.append((url, title))
     
     def get_title (self, page) :
@@ -120,6 +124,9 @@
         self.basename = basename
         self.url_tail = url_tail
 
+        # unbound
+        self.request = None
+
         # sub-init
         self._init()
 
@@ -130,6 +137,13 @@
         
         pass
 
+    def bind_request (self, request) :
+        """
+            Bind this page-render to the given request
+        """
+
+        self.request = request
+
     @property
     def title (self) :
         """
@@ -179,7 +193,9 @@
             Loads the .tmpl file, and renders it
         """
 
-        return template.render_file(self.path)
+        return template.render_file(self.path,
+            request     = self.request,
+        )
 
 # list of page handlers, by type
 TYPE_HANDLERS = [
@@ -215,17 +231,19 @@
     segments = name.split('/')
 
     # iterate through the parts of the page segments
-    while segments :
+    while True :
+        segment = None
+
         # pop segment
-        segment = segments.pop(0)
+        if segments :
+            segment = segments.pop(0)
 
-        # add to page url
-        url_segments.append(segment)
+            url_segments.append(segment)
 
         # translate empty -> index
         if not segment :
             segment = 'index'
-        
+
         # look for it in the dir
         for filename in os.listdir(path) :
             # build full file path
@@ -254,6 +272,10 @@
                 # inspect next file in dir
                 continue
 
+        else :
+            # did not find any dir or file, break out of while loop
+            break
+
     # did not find the filename we were looking for in os.listdir
     raise PageError("Page not found: %s" % name, status='404 Not Found')