Guest User

Untitled

a guest
Jun 24th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.20 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import wsgiref.handlers
  4. from google.appengine.ext import webapp
  5. from google.appengine.ext import db
  6. from Cheetah.Template import Template
  7. from util.sessions import Session
  8. import datetime
  9. import os
  10.  
  11. # Get full path name for a file
  12. def render(filename):
  13. try:
  14. path = os.path.join(os.path.dirname(__file__), 'Templates/%s' % filename)
  15. return Template(file=path)
  16. except:
  17. pass
  18.  
  19. # Verify Username availability
  20. def checkPresence(name):
  21. alldata = Users.all()
  22. alldata.filter('_username =', name)
  23. filtereddata = alldata.fetch(limit=1)
  24. for c in filtereddata:
  25. if c is not None:
  26. return True
  27. else:
  28. return False
  29.  
  30. # Verify Username/Password authenticity
  31. def checkCredential(username_, password_):
  32. alldata = Users.all()
  33. alldata.filter('_username =', username_)
  34. filtereddata = alldata.fetch(limit=1)
  35. for c in filtereddata:
  36. if c._password == password_:
  37. return True
  38. else:
  39. return False
  40. break
  41.  
  42. # DB Model to store users information
  43. class Users(db.Model):
  44. _salutation = db.StringProperty(required=True)
  45. _address = db.StringProperty(required=True)
  46. _fullname = db.StringProperty(required=True)
  47. _username = db.StringProperty(required=True)
  48. _password = db.StringProperty(required=True)
  49. _description = db.StringProperty(required=True)
  50. _setupdate = db.DateTimeProperty(required=True, auto_now=True)
  51.  
  52. # Sign up Handler
  53. # Will make sure all the fields have been filled out correctly.
  54. # If correct, it will redirect the user to member.html
  55. class SignupHandler(webapp.RequestHandler):
  56.  
  57. def post(self):
  58. salutation = self.request.get("_salutation")
  59. fullname = self.request.get("_fullname")
  60. address = self.request.get("_address")
  61. username = self.request.get("_username")
  62. password = self.request.get("_password")
  63. description = self.request.get("_description")
  64.  
  65. if salutation == "0" or fullname == "" or address == "" or description == "0":
  66. page = render('index.html')
  67. page.error = "One or more fields were filled out incorrectly. Sorry for the trouble!"
  68. page.error2 = ""
  69. self.response.out.write(page)
  70. elif checkPresence(username) == True:
  71. page = render('index.html')
  72. page.error = "I'm Sorry! The username you wanted has already been taken."
  73. page.error2 = ""
  74. self.response.out.write(page)
  75. else:
  76. # Register the user
  77. newmember = Users(_salutation = salutation, _fullname = fullname, _address = address, _username = username, _password = password, _description = description)
  78. newmember.put()
  79. self.session = Session()
  80. self.session['username'] = username
  81. self.session['count'] = 0
  82. self.redirect('/members')
  83.  
  84. # Login Handler
  85. # Will make sure that the credentials are correct
  86. # If correct, it will redirect the user to member.html
  87. class LoginHandler(webapp.RequestHandler):
  88.  
  89. def post(self):
  90. username = self.request.get("_username")
  91. password = self.request.get("_password")
  92.  
  93. if username == "" or password == "":
  94. page = render('index.html')
  95. page.error2 = "One or more fields were filled out incorrectly!"
  96. page.error = ""
  97. self.response.out.write(page)
  98. elif checkPresence(username) == True and checkCredential(username, password) == True:
  99. self.session = Session()
  100. self.session['username'] = username
  101. self.session['count'] = 0
  102. self.redirect('/members')
  103. else:
  104. page = render('index.html')
  105. page.error2 = "Incorrect Username or Password!"
  106. page.error = ""
  107. self.response.out.write(page)
  108.  
  109. # Logout Handler
  110. # Will log the user out. Then, upon success, it will redirect the user to index.html
  111. class LogoutHandler(webapp.RequestHandler):
  112. def get(self):
  113. self.session = Session()
  114. self.session.delete()
  115. self.redirect('/')
  116.  
  117. class MemberHandler(webapp.RequestHandler):
  118. def get(self):
  119. self.session = Session()
  120. self.session['count'] = self.session['count'] + 1
  121. if "username" in self.session:
  122. if self.session['count'] == 2:
  123. page = render('member.html')
  124. page.Message = "Welcome %s! See, I still remember you. Now try and navigate away from this page and come back." % str(self.session['username']).upper()
  125. self.response.out.write(page)
  126. elif self.session['count'] > 2:
  127. page = render('member.html')
  128. page.Message = "Welcome %s! See, I still remember you even after your %ith visit to this site! Isn't that awesome!" % (str(self.session['username']).upper(), self.session['count'])
  129. self.response.out.write(page)
  130. else:
  131. page = render('member.html')
  132. page.Message = "Welcome %s! Refresh the page to see whether or not I can remember you!" % str(self.session['username']).upper()
  133. self.response.out.write(page)
  134.  
  135. # Main Handler
  136. # Will show index.html, basically.
  137. class MainHandler(webapp.RequestHandler):
  138. def get(self):
  139. self.session = Session()
  140. if not "username" in self.session:
  141. page = render('index.html')
  142. page.error = ""
  143. page.error2 = ""
  144. self.response.out.write(page)
  145. else:
  146. self.redirect('/members')
  147.  
  148. def main():
  149. application = webapp.WSGIApplication([('/', MainHandler), ('/signup', SignupHandler), ('/login', LoginHandler), ('/logout', LogoutHandler), ('/members', MemberHandler)], debug=True)
  150. wsgiref.handlers.CGIHandler().run(application)
  151.  
  152. if __name__ == '__main__':
  153. main()
Add Comment
Please, Sign In to add comment