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

/api/routes/GlobalOptions.py

https://gitlab.com/fdemian/Shelob
Python | 118 lines | 86 code | 29 blank | 3 comment | 3 complexity | a47cdaf790bbb99b31d97276b0dd968e MD5 | raw file
  1. import json
  2. from tornado.web import RequestHandler
  3. from tornado.gen import coroutine
  4. from api.model.models import GlobalConfiguration
  5. # from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
  6. class GlobalConfigurationHandler(RequestHandler):
  7. def data_received(self, chunk):
  8. pass
  9. # GET /options
  10. @coroutine
  11. def get(self):
  12. try:
  13. session = self.settings['db']
  14. config_options = session.query(GlobalConfiguration).all()
  15. options = []
  16. for option in config_options:
  17. json_option = {
  18. 'key': option.key,
  19. 'value': option.value
  20. }
  21. options.append(json_option)
  22. response = {"page": 1, "options": options}
  23. self.set_header("Content-Type", "application/jsonp;charset=UTF-8")
  24. self.set_header("Access-Control-Allow-Origin", "*")
  25. self.write(response)
  26. return
  27. except Exception as e:
  28. print(e)
  29. response = {'message': "Could not read configuration options."}
  30. self.set_status(500, 'Error')
  31. self.set_header("Access-Control-Allow-Origin", "*")
  32. self.write(response)
  33. return
  34. @coroutine
  35. # TODO: this shit ain't secure. Authenticate user.
  36. def put(self):
  37. session = self.settings['db']
  38. request = self.request.body.decode("utf-8")
  39. json_request = json.loads(json.loads(request))
  40. config = session.query(GlobalConfiguration).filter(GlobalConfiguration.key == json_request['key']).one()
  41. config.value = str(json_request['value'])
  42. session.commit()
  43. response = {'message': "Config updated sucessfully."}
  44. self.set_status(200, 'Ok')
  45. self.set_header("Access-Control-Allow-Origin", "*")
  46. self.write(response)
  47. return
  48. @coroutine
  49. def delete(self):
  50. response = {"message": "This is not a valid method for this resource."}
  51. self.set_status(405, 'Error')
  52. self.set_header("Access-Control-Allow-Origin", "*")
  53. self.write(response)
  54. return
  55. @coroutine
  56. def trace(self):
  57. response = {"message": "This is not a valid method for this resource."}
  58. self.set_status(405, 'Error')
  59. self.set_header("Access-Control-Allow-Origin", "*")
  60. self.write(response)
  61. return
  62. @coroutine
  63. def connect(self):
  64. response = {"message": "This is not a valid method for this resource."}
  65. self.set_status(405, 'Error')
  66. self.set_header("Access-Control-Allow-Origin", "*")
  67. self.write(response)
  68. return
  69. @coroutine
  70. def options(self):
  71. response = {"message": "This is not a valid method for this resource."}
  72. self.set_status(405, 'Error')
  73. self.set_header("Access-Control-Allow-Origin", "*")
  74. self.write(response)
  75. return
  76. @coroutine
  77. def patch(self):
  78. response = {"message": "This is not a valid method for this resource."}
  79. self.set_status(405, 'Error')
  80. self.set_header("Access-Control-Allow-Origin", "*")
  81. self.write(response)
  82. return
  83. @coroutine
  84. def head(self):
  85. response = {"message": "This is not a valid method for this resource."}
  86. self.set_status(405, 'Error')
  87. self.set_header("Access-Control-Allow-Origin", "*")
  88. self.write(response)
  89. return