PageRenderTime 27ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/api/routes/Activation.py

https://gitlab.com/fdemian/Shelob
Python | 118 lines | 87 code | 30 blank | 1 comment | 2 complexity | d794db67eee9549994ff80f25232a084 MD5 | raw file
  1. import json
  2. from api.model.models import User, UserActivation
  3. from tornado.web import RequestHandler
  4. from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
  5. from tornado.gen import coroutine
  6. class UserActivationHandler(RequestHandler):
  7. def data_received(self, chunk):
  8. pass
  9. @coroutine
  10. def get(self):
  11. response = {"message": "This is not a valid method for this resource."}
  12. self.set_status(405, 'Error')
  13. self.set_header("Access-Control-Allow-Origin", "*")
  14. self.write(json.dumps(response))
  15. return
  16. # TODO: Change to GET method?
  17. def post(self):
  18. request = self.request.body.decode("utf-8")
  19. request_dict = json.loads(request)
  20. code = request_dict["code"]
  21. try:
  22. session = self.settings['db']
  23. user_activation = session.query(UserActivation).filter(UserActivation.code == code).one()
  24. user_to_validate = session.query(User).filter(User.id == user_activation.user_id).one()
  25. user_to_validate.valid = True
  26. session.commit()
  27. session.flush()
  28. session.delete(user_activation)
  29. session.commit()
  30. response = {"message": "Account confirmed successfully."}
  31. self.set_status(200, 'Ok')
  32. self.set_header("Access-Control-Allow-Origin", "*")
  33. self.write(json.dumps(response))
  34. except (NoResultFound, MultipleResultsFound):
  35. response = {"message": "Error: the activation code introduced was invalid."}
  36. self.set_status(400, 'Error')
  37. self.set_header("Access-Control-Allow-Origin", "*")
  38. self.write(json.dumps(response))
  39. return
  40. @coroutine
  41. def put(self):
  42. response = {"message": "This is not a valid method for this resource."}
  43. self.set_status(405, 'Error')
  44. self.set_header("Access-Control-Allow-Origin", "*")
  45. self.write(response)
  46. return
  47. @coroutine
  48. def delete(self):
  49. response = {"message": "This is not a valid method for this resource."}
  50. self.set_status(405, 'Error')
  51. self.set_header("Access-Control-Allow-Origin", "*")
  52. self.write(response)
  53. return
  54. @coroutine
  55. def trace(self):
  56. response = {"message": "This is not a valid method for this resource."}
  57. self.set_status(405, 'Error')
  58. self.set_header("Access-Control-Allow-Origin", "*")
  59. self.write(response)
  60. return
  61. @coroutine
  62. def connect(self):
  63. response = {"message": "This is not a valid method for this resource."}
  64. self.set_status(405, 'Error')
  65. self.set_header("Access-Control-Allow-Origin", "*")
  66. self.write(response)
  67. return
  68. @coroutine
  69. def options(self):
  70. response = {"message": "This is not a valid method for this resource."}
  71. self.set_status(405, 'Error')
  72. self.set_header("Access-Control-Allow-Origin", "*")
  73. self.write(response)
  74. return
  75. @coroutine
  76. def patch(self):
  77. response = {"message": "This is not a valid method for this resource."}
  78. self.set_status(405, 'Error')
  79. self.set_header("Access-Control-Allow-Origin", "*")
  80. self.write(response)
  81. return
  82. @coroutine
  83. def head(self):
  84. response = {"message": "This is not a valid method for this resource."}
  85. self.set_status(405, 'Error')
  86. self.set_header("Access-Control-Allow-Origin", "*")
  87. self.write(response)
  88. return