from SitePage import SitePage from WebKit.HTTPExceptions import HTTPNotFound import os import re wikiRoot = '/var/lib/wiki/wiki.webwareforpython.org' class WikiPage(SitePage): def wikiName(self): return 'name_of_wiki_page' def title(self): try: meta = open(os.path.join(wikiRoot, self.wikiName()) + ".meta", 'r') except IOError: pass else: lines = meta.readlines() meta.close() for l in lines: if l.startswith('title:'): return l[7:] return '' def fixPath(self, match): # fix up relative URLS. Leave absolute URLs unchanged. url = match.group(1) if url and url[0] == '/': return 'href="%s"' % url if len(url) >= 5 and url[:5] == 'http:': return 'href="%s"' % url if len(url) >= 7 and url[:7] == 'mailto:': return 'href="%s"' % url return 'href="%sWiki/%s"' % (self.request().siteRoot(), url) def fixPaths(self, page): page = re.sub('href\s*=\s*"([^"]*)"', self.fixPath, page) return page def writeContent(self): try: meta = open(os.path.join(wikiRoot, self.wikiName()) + ".html", 'r') except IOError: raise HTTPNotFound() else: page = meta.read() page = self.fixPaths(page) self.write(page) meta.close() self.writeFooter() def writeFooter(self): self.writeln('

This page can be updated in the Webware Wiki.

' % (self.wikiName()))