Guest User

Untitled

a guest
Aug 4th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. Web.py todo list with login
  2. """ Basic todo list using webpy 0.3 """
  3. import web
  4. import model
  5.  
  6. ### Url mappings
  7.  
  8. urls = (
  9. '/', 'Index',
  10. '/login', 'Login',
  11. '/logout', 'Logout',
  12. '/del/(d+)', 'Delete',
  13. )
  14.  
  15.  
  16. ### Templates
  17. render = web.template.render('templates', base='base')
  18. app = web.application(urls, locals())
  19. session = web.session.Session(app, web.session.DiskStore('sessions'))
  20.  
  21. allowed = (
  22. ('user','pass'),
  23. ('tom','pass2')
  24. )
  25.  
  26. class Login:
  27.  
  28. login_form = web.form.Form( web.form.Textbox('username'),
  29. web.form.Password('password'),
  30. web.form.Button('Login'),
  31. )
  32.  
  33. def GET(self):
  34. f = self.login_form()
  35. return render.login(f)
  36.  
  37. def POST(self):
  38. # Validation
  39. if not self.login_form.validates():
  40. print "it didn't validate!"
  41.  
  42. session.logged_in = True
  43. raise web.seeother('/')
  44.  
  45.  
  46. class Logout:
  47. def GET(self):
  48. session.logged_in = False
  49. raise web.seeother('/')
  50.  
  51. class Index:
  52.  
  53. form = web.form.Form(
  54. web.form.Textbox('title', web.form.notnull,
  55. description="I need to:"),
  56. web.form.Button('Add todo'),
  57. )
  58.  
  59. def GET(self):
  60. print "logged_in " + str(session.get('logged_in', False))
  61. if session.get('logged_in', False):
  62. """ Show page """
  63. todos = model.get_todos()
  64. form = self.form()
  65. return render.index(todos, form)
  66. else:
  67. raise web.seeother('/login')
  68.  
  69. def POST(self):
  70. """ Add new entry """
  71. form = self.form()
  72. if not form.validates():
  73. todos = model.get_todos()
  74. return render.index(todos, form)
  75. model.new_todo(form.d.title)
  76. raise web.seeother('/')
  77.  
  78.  
  79.  
  80. class Delete:
  81.  
  82. def POST(self, id):
  83. """ Delete based on ID """
  84. id = int(id)
  85. model.del_todo(id)
  86. raise web.seeother('/')
  87.  
  88.  
  89. app = web.application(urls, globals())
  90.  
  91. if __name__ == '__main__':
  92. app.run()
  93.  
  94. """ Basic todo list using webpy 0.3 """
  95. import web
  96. import model
  97.  
  98. ### Url mappings
  99.  
  100. urls = (
  101. '/', 'Index',
  102. '/login', 'Login',
  103. '/logout', 'Logout',
  104. '/del/(d+)', 'Delete',
  105. )
  106.  
  107.  
  108. web.config.debug = False
  109. render = web.template.render('templates', base='base')
  110. app = web.application(urls, locals())
  111. session = web.session.Session(app, web.session.DiskStore('sessions'))
  112.  
  113. allowed = (
  114. ('user','pass'),
  115. )
  116.  
  117. class Login:
  118.  
  119. login_form = web.form.Form( web.form.Textbox('username', web.form.notnull),
  120. web.form.Password('password', web.form.notnull),
  121. web.form.Button('Login'),
  122. )
  123.  
  124. def GET(self):
  125. f = self.login_form()
  126. return render.login(f)
  127.  
  128. def POST(self):
  129. if not self.login_form.validates():
  130. return render.login(self.login_form)
  131.  
  132. username = self.login_form['username'].value
  133. password = self.login_form['password'].value
  134. if (username,password) in allowed:
  135. session.logged_in = True
  136. raise web.seeother('/')
  137.  
  138. return render.login(self.login_form)
  139.  
  140.  
  141. class Logout:
  142. def GET(self):
  143. session.logged_in = False
  144. raise web.seeother('/')
  145.  
  146. class Index:
  147.  
  148. form = web.form.Form(
  149. web.form.Textbox('title', web.form.notnull,
  150. description="I need to:"),
  151. web.form.Button('Add todo'),
  152. )
  153.  
  154. def GET(self):
  155. if session.get('logged_in', False):
  156. """ Show page """
  157. todos = model.get_todos()
  158. form = self.form()
  159. return render.index(todos, form)
  160. else:
  161. raise web.seeother('/login')
  162.  
  163. def POST(self):
  164. """ Add new entry """
  165. form = self.form()
  166. if not form.validates():
  167. todos = model.get_todos()
  168. return render.index(todos, form)
  169. model.new_todo(form.d.title)
  170. raise web.seeother('/')
  171.  
  172.  
  173.  
  174. class Delete:
  175.  
  176. def POST(self, id):
  177. """ Delete based on ID """
  178. id = int(id)
  179. model.del_todo(id)
  180. raise web.seeother('/')
  181.  
  182.  
  183. app = web.application(urls, globals())
  184.  
  185. if web.config.get('_session') is None:
  186. session = web.session.Session(app, web.session.DiskStore('sessions'), {'count': 0})
  187. web.config._session = session
  188. else:
  189. session = web.config._session
  190.  
  191. if __name__ == '__main__':
  192. app.run()
Add Comment
Please, Sign In to add comment