import sys; sys.path.append('../') from web.wsgi import * import web.database.object, os links = """

Sign out | View | Add

""" def simpleApp(environ, start_response): person = web.database.object.Table("Person") person.add(column="String", name='firstName', required=True) person.addColumn(web.database.object.String(name="surname")) person.addColumn( web.database.object.StringSelect( name="profession", options=[None, 'Developer', 'Web Developer'], displayNoneAs='Not Specified' ) ) person.add(column="Bool", name='sex', displayTrueAs='Male', displayFalseAs='Female') database = web.database.object.Database() database.addTable(person) # Initialise the database database.init(environ['web.database.cursor']) if not database.tablesExist(): database.createTables() mode = 'view' if environ['web.cgi'].has_key('mode'): mode = environ['web.cgi']['mode'].value # signIn mode needed to allow for sign in handling # you will be redirected to the correct place eventually if mode == 'signIn': start_response('403 User not signed in', []) environ['web.database.connection'].commit() return [] elif mode == 'signOut': start_response('403 User not signed in', []) environ['web.database.connection'].commit() return [] elif mode == 'add': if not environ.has_key('web.auth.user'): # No user signed in start_response('403 User not signed in', []) environ['web.database.connection'].commit() return [] else: result = [] form = database['Person'].form(stickyData={'mode':'add'}) if len(environ['web.cgi']) > 1: # Assume form submitted form.populate(environ['web.cgi']) if form.valid(): entry = database['Person'].insert(all=form.dict()) result.append('''

Entry Added

%s

Go Back'''%(form.frozen()) ) else: result.append( """%s

Error

There were some invalid fields. Please correct them.

%s"""%(links, form.html()) ) else: result.append("""%s

Add Entry

%s"""%(links, form.html())) start_response('200 OK', [('Content-type','text/html')]) environ['web.database.connection'].commit() return result else: entries = '' entries += '' for row in database['Person'].values(): entries += ''%( row['firstName'], row['surname'], row['profession'], row['sex'] ) entries += '
FirstnameSurnameProfessionSex
%s%s%s%s
' info = """The table above shows people entries. To add an entry, click the add link above but you will need to sign in using the username john and the password bananas. If you don't visit a page you will be signed out after 20 seconds and have to sign in again.""" start_response('200 OK', [('Content-type','text/html')]) environ['web.database.connection'].commit() return ["%s

Entries

%s

%s

"%(links, entries,info)] # Middleware Setup application = error.Error( database.Database( session.Session( cgi.CGI( auth.Auth( simpleApp, driver='database', autoCreate=1, expire=0, idle=20, template = """ Sign In %s

Sign In

%%(form)s

%%(message)s

"""%links, redirectMethod='metaRefresh' ), ), expire = 1000, autoCreate = 1, driver='database', ), adapter = 'snakesql', database = 'wsgi-example', autoCreate = 1 ), )