Guest User

Untitled

a guest
Oct 29th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. from google.appengine.ext import db
  2. from ext import sessions as sess
  3. from ext import rotmodel as ROT
  4.  
  5. class BaseModel(ROT.ROTModel):
  6. created = db.DateProperty(auto_now_add=True)
  7.  
  8. class User(BaseModel):
  9. username = db.StringProperty(required=True)
  10. password = db.StringProperty(required=True)
  11. email = db.StringProperty(required=True)
  12. firstname = db.StringProperty(required=True)
  13. lastname = db.StringProperty(required=True)
  14. expertise = db.StringProperty(required=True)
  15.  
  16. session = db.ReferenceProperty(sess._AppEngineUtilities_Session)
  17.  
  18. @classmethod
  19. def login(cls, session, username, password):
  20. """
  21. Returns user object on success, None on failure.
  22. """
  23. query = User.all().filter("username =", username).filter("password =", password)
  24. result = query.get()
  25.  
  26. if result:
  27. result.session = session.get_ds_entity()
  28. result.put()
  29. session['user_key'] = result.key()
  30.  
  31. return result
  32.  
  33. @classmethod
  34. def logout(cls, session):
  35. """
  36. Clears user.session and session data.
  37. Returns nothing.
  38. """
  39. if session.has_key('user_key'):
  40. user = User.get(session['user_key'])
  41. if user:
  42. user.session = None
  43. user.put()
  44. session.clear()
  45.  
  46. @classmethod
  47. def isAuthentic(cls, session):
  48. """
  49. Checks if this computer is logged in, and if the user object is
  50. set for this session.
  51. Returns the session instance if successful. None on failure.
  52. """
  53. if session.has_key('user_key'):
  54. user = User.get_by_id(session['user_key'])
  55. if user and user.session == session.get_ds_entity():
  56. return session
  57. session.clear() #If the session key exists, but the user doesn't match, then clear the session.
  58. return None
Add Comment
Please, Sign In to add comment