return Page(self.backend, res.id, data=res)
def get_page_title(self, page, default=None):
+ # Try to retrieve title from cache
+ title = self.memcache.get("wiki:title:%s" % page)
+ if title:
+ return title
+
+ # If the title has not been in the cache, we will
+ # have to look it up
doc = self.get_page(page)
if doc:
- return doc.title
+ title = doc.title
+ else:
+ title = os.path.basename(page)
- return default or os.path.basename(page)
+ # Save in cache for forever
+ self.memcache.set("wiki:title:%s" % page, title)
+
+ return title
def get_page(self, page, revision=None):
page = Page.sanitise_page_name(page)
page = self._get_page("INSERT INTO wiki(page, author_uid, markdown, changes, address) \
VALUES(%s, %s, %s, %s, %s) RETURNING *", page, author.uid, content or None, changes, address)
+ # Update cache
+ self.memcache.set("wiki:title:%s" % page.path, page.title)
+
# Send email to all watchers
page._send_watcher_emails(excludes=[author])