瀏覽代碼

Sending sessions cross modules

https
jakobsn 6 年之前
父節點
當前提交
166ec1c785
共有 5 個文件被更改,包括 114 次插入63 次删除
  1. +26
    -0
      src/app/guestbook.py
  2. +35
    -0
      src/app/login.py
  3. +18
    -0
      src/app/logout.py
  4. +23
    -0
      src/app/register.py
  5. +12
    -63
      src/app/views.py

+ 26
- 0
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")

+ 35
- 0
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)


+ 18
- 0
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('/')

+ 23
- 0
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('/')


+ 12
- 63
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

Loading…
取消
儲存