import web
from web import form
import sqlite3
render = web.template.render('templates/')
db = web.database(dbn='sqlite', db='database.sqlite')
urls = (
'/', 'index',
'/create/([a-zA-Z0-9_]+)', 'create_page',
'/([a-zA-Z0-9_]+)', 'view_page',
'/edit/([a-zA-Z0-9_]+)', 'edit_page'
)
app = web.application(urls, globals())
edit_form = form.Form(
form.Textarea("content", description=""),
form.Hidden("id", description=""),
form.Button("save", type="submit", description="")
)
def get_page(name):
myvar = dict(page_title="%s" % name)
pages = db.select('page', myvar, where="page_title = $page_title")
v = []
for page in pages:
v.append(page)
if v != []:
return page
else:
return False
class index:
def GET(self):
pages = db.select('page')
return render.index(pages)
class create_page:
def GET(self, name):
if get_page(name) != False:
raise web.seeother('/%s' % name)
else:
db.insert('page', page_title=name, page_content="")
raise web.seeother('/edit/%s' % name)
class view_page:
def GET(self, name):
if get_page(name) != False:
page = get_page(name)
return render.view(page)
else:
return render.create(name)
class edit_page:
def GET(self, name):
if get_page(name) != False:
page = get_page(name)
f = edit_form()
f.get('content').value=page.page_content
f.get('content').attrs['class'] = 'class'
f.get('id').value=page.page_id
return render.edit(f, page)
else:
raise web.seeother('/%s' % name)
def POST(self, name):
f = edit_form()
if not f.validates():
return render.edit(f)
else:
i = web.input()
db.update('page', where="page_id = %s" % i.id, page_content = i.content )
page = get_page(name)
raise web.seeother('/%s' % page.page_title)
if __name__ == "__main__": app.run()