wepaste

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()