25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

103 satır
2.6KB

  1. import web
  2. from forms import login_form, register_form, guestbook_form
  3. import model
  4. from utils import get_nav_bar
  5. # Define application routes
  6. urls = (
  7. '/', 'Index',
  8. '/login', 'Login',
  9. '/logout', 'Logout',
  10. '/register', 'Register',
  11. '/guestbook', 'Guestbook',
  12. )
  13. # Initialize application using the web py framework
  14. app = web.application(urls, globals())
  15. # Get html templates
  16. render = web.template.render('templates/')
  17. # Workaround to use sessions with reloader (debugger) http://webpy.org/cookbook/session_with_reloader
  18. if web.config.get('_session') is None:
  19. session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"username": None})
  20. web.config._session = session
  21. else:
  22. session = web.config._session
  23. # Add session to global variables
  24. render._add_global(session, 'session')
  25. class Index():
  26. # Get main page
  27. def GET(self):
  28. nav = get_nav_bar(session)
  29. return render.index(nav)
  30. class Login():
  31. def GET(self):
  32. # Show other registered users if the user is logged in
  33. if session.username:
  34. friends = model.get_users()
  35. else:
  36. friends = [[],[]]
  37. nav = get_nav_bar(session)
  38. return render.login(nav, login_form, friends)
  39. # Log In
  40. def POST(self):
  41. # Validate login credential with database query
  42. data = web.input()
  43. user = model.match_user(data.username, data.password)
  44. # If there is a matching user/password in the database the user is logged in
  45. if len(user):
  46. friends = model.get_users()
  47. session.username = data.username
  48. else:
  49. friends = [[],[]]
  50. nav = get_nav_bar(session)
  51. return render.login(nav, login_form, friends)
  52. class Register:
  53. # Get the registration form
  54. def GET(self):
  55. nav = get_nav_bar(session)
  56. return render.register(nav, register_form)
  57. # Register new user in database
  58. def POST(self):
  59. data = web.input()
  60. model.set_user(nav, data.username, data.password)
  61. raise web.seeother('/')
  62. class Guestbook:
  63. # Get guestbook entries
  64. def GET(self):
  65. entries = model.get_guestbook_entries()
  66. nav = get_nav_bar(session)
  67. return render.guestbook(nav, entries, guestbook_form)
  68. def POST(self):
  69. data = web.input()
  70. entry = web.data()
  71. print(data)
  72. print(entry)
  73. model.set_guestbook_entry(data.entry)
  74. return web.seeother("/guestbook")
  75. class Logout:
  76. # Kill session
  77. def GET(self):
  78. session.kill()
  79. session.username = None
  80. raise web.seeother('/')