qmsk_www_pages/pages.py
changeset 209 e55deb0be237
parent 206 440e6769976c
child 75 9329ceafa15c
--- a/qmsk_www_pages/pages.py	Sun Sep 14 03:22:57 2014 +0300
+++ b/qmsk_www_pages/pages.py	Sun Sep 14 03:31:47 2014 +0300
@@ -120,17 +120,33 @@
             
             yield path, file_name, file_type
 
+    def item_title (self, name):
+        """
+            Lookup item title if exists.
+        """
+
+        title_path = os.path.join(self.path, name + '.title')
+
+        log.info("%s: %s title_path=%s", self, name, title_path)
+
+        if os.path.exists(title_path):
+            return open(title_path).read().strip()
+        else:
+            return None
+
     def list (self):
         """
             Lists all Trees and Pages for this Tree
         """
         
-        for path, file_name, file_type in self.scan():
+        for path, name, file_type in self.scan():
+            title = self.item_title(name) or name
+
             # trees
             if os.path.isdir(path):
-                yield self.url(tree=file_name), file_name, None
+                yield self.url(tree=name), name, None, title
 
-            if file_name == self.INDEX:
+            if name == self.INDEX:
                 continue
             
             # pages
@@ -139,8 +155,8 @@
 
             if file_type not in TYPES:
                 continue
-            
-            yield self.url(page=file_name), file_name, file_type
+
+            yield self.url(page=name), name, file_type, title
 
     def page (self, name):
         """
@@ -167,11 +183,15 @@
                 continue
             
             # out
+            title = self.item_title(file_name)
+
             return page_type(
                 path    = path,
                 name    = name,
                 tree    = self,
                 parents = self.parents + (self, ),
+
+                title   = title,
             )
 
 class Page (object):