diff --git a/src/app/guestbook.py b/src/app/guestbook.py new file mode 100644 index 0000000..3f3dd07 --- /dev/null +++ b/src/app/guestbook.py @@ -0,0 +1,26 @@ +import web +from forms import guestbook_form +import model +from utils import get_nav_bar + +# Get html templates +render = web.template.render('templates/') + + + +class Guestbook: + + # Get guestbook entries + def GET(self): + entries = model.get_guestbook_entries() + session = web.ctx.session + 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") diff --git a/src/app/login.py b/src/app/login.py new file mode 100644 index 0000000..caf925b --- /dev/null +++ b/src/app/login.py @@ -0,0 +1,35 @@ +import web +from forms import login_form +import model +from utils import get_nav_bar + +# Get html templates +render = web.template.render('templates/') + +class Login(): + + def GET(self): + session = web.ctx.session + # 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): + session = web.ctx.session + # 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) + diff --git a/src/app/logout.py b/src/app/logout.py new file mode 100644 index 0000000..be65ec9 --- /dev/null +++ b/src/app/logout.py @@ -0,0 +1,18 @@ +import web +from forms import login_form, register_form, guestbook_form +import model +from utils import get_nav_bar + +# Get html templates +render = web.template.render('templates/') + + + +class Logout: + + # Kill session + def GET(self): + session = web.ctx.session + session.kill() + session.username = None + raise web.seeother('/') diff --git a/src/app/register.py b/src/app/register.py new file mode 100644 index 0000000..fbff5fe --- /dev/null +++ b/src/app/register.py @@ -0,0 +1,23 @@ +import web +from forms import register_form +import model +from utils import get_nav_bar + +# Get html templates +render = web.template.render('templates/') + + +class Register: + + # Get the registration form + def GET(self): + session = web.ctx.session + 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(data.username, data.password) + raise web.seeother('/') + diff --git a/src/app/views.py b/src/app/views.py index 7385be7..8106857 100644 --- a/src/app/views.py +++ b/src/app/views.py @@ -2,6 +2,10 @@ import web from forms import login_form, register_form, guestbook_form import model from utils import get_nav_bar +from guestbook import Guestbook +from login import Login +from logout import Logout +from register import Register # Define application routes urls = ( @@ -28,75 +32,20 @@ else: # Add session to global variables render._add_global(session, 'session') +def session_hook(): + web.ctx.session = session + web.template.Template.globals['session'] = session -class Index(): +app.add_processor(web.loadhook(session_hook)) + +class Index: # Get main page def GET(self): nav = get_nav_bar(session) return render.index(nav) +class Admin: -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('/') + session = web.ctx.session