|
- import web
- from forms import login_form, register_form, guestbook_form
- import model
- from utils import get_nav_bar
-
- # Define application routes
- urls = (
- '/', 'Index',
- '/login', 'Login',
- '/logout', 'Logout',
- '/register', 'Register',
- '/guestbook', 'Guestbook',
- )
-
- # Initialize application using the web py framework
- app = web.application(urls, globals())
-
- # Get html templates
- render = web.template.render('templates/')
-
- # Workaround to use sessions with reloader (debugger) http://webpy.org/cookbook/session_with_reloader
- if web.config.get('_session') is None:
- session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"username": None})
- web.config._session = session
- else:
- session = web.config._session
-
- # Add session to global variables
- render._add_global(session, 'session')
-
-
- class Index():
-
- # Get main page
- def GET(self):
- nav = get_nav_bar(session)
- return render.index(nav)
-
-
- class Login():
-
- def GET(self):
- # Show other registered users if the user is logged in
- if session.username:
- friends = model.get_users()
- else:
- friends = [[],[]]
- nav = get_nav_bar(session)
- return render.login(nav, login_form, friends)
-
- # Log In
- def POST(self):
- # Validate login credential with database query
- data = web.input()
- user = model.match_user(data.username, data.password)
- # If there is a matching user/password in the database the user is logged in
- if len(user):
- friends = model.get_users()
- session.username = data.username
- else:
- friends = [[],[]]
- nav = get_nav_bar(session)
- return render.login(nav, login_form, friends)
-
-
- class Register:
-
- # Get the registration form
- def GET(self):
- nav = get_nav_bar(session)
- return render.register(nav, register_form)
-
- # Register new user in database
- def POST(self):
- data = web.input()
- model.set_user(nav, data.username, data.password)
- raise web.seeother('/')
-
-
- class Guestbook:
-
- # Get guestbook entries
- def GET(self):
- entries = model.get_guestbook_entries()
- nav = get_nav_bar(session)
- return render.guestbook(nav, entries, guestbook_form)
-
- def POST(self):
- data = web.input()
- entry = web.data()
- print(data)
- print(entry)
- model.set_guestbook_entry(data.entry)
- return web.seeother("/guestbook")
-
- class Logout:
-
- # Kill session
- def GET(self):
- session.kill()
- session.username = None
- raise web.seeother('/')
|