#!/usr/bin/python import web from markdown import Markdown import os, time, re, cgi # For debugging use only web.internalerror = web.debugerror urls = ( '/', 'WikiPages', '/page/([a-zA-Z_]+)', 'WikiPage', '/editor/([a-zA-Z_]+)', 'WikiEditor' ) wikidir = os.path.realpath('./pages') class WikiPages: def GET(self): web.header("Content-Type","text/html; charset=utf-8") t = re.compile('^[a-zA-Z_]+$') wikipages = os.listdir(wikidir) print "wiki pages" print "

Wiki Pages:

" class WikiPage: def GET(self, name): page = os.path.join(wikidir,name) web.header("Content-Type","text/html; charset=utf-8") if os.path.exists(page): print "%s" % name print "

%s

" % name print "

" print "[Pages] " \ % (web.ctx.home+"/") print "[Edit] " \ % (web.ctx.home+'/editor/'+name) print "

" print Markdown(open(page).read()) print "" else: web.ctx.status = '404 Not Found' print "Does not exist: %s" % name print "

Page %s does not yet exist - " % name print "Create" % (web.ctx.home+'/editor/'+name) def POST(self,name): page = os.path.join(wikidir,name) if os.path.exists(page): newpage = page+'.'+time.strftime("%Y%m%d%H%M%S", time.gmtime()) os.rename(page,newpage) f = open(page, "w") f.write(web.input(page='').page) f.close() web.redirect(web.ctx.home+'/page/'+name) class WikiEditor: def GET(self,name): web.header("Content-Type","text/html; charset=utf-8") print "Editing %s" % name; print "

Editing: %s

" % name print "
" \ % (web.ctx.home+'/page/'+name) print "
" print "

Markdown Syntax

" print "" if __name__ == "__main__": web.run(urls)