server.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. # -*- coding: utf-8 -*-
  2. """
  3. walle-web
  4. :copyright: © 2015-2017 walle-web.io
  5. :created time: 2017-03-25 11:15:01
  6. :author: wushuiyong@walle-web.io
  7. """
  8. from flask import request
  9. from walle.api.api import SecurityResource
  10. from walle.form.server import ServerForm
  11. from walle.model.deploy import ServerModel
  12. class ServerAPI(SecurityResource):
  13. def get(self, id=None):
  14. """
  15. fetch environment list or one item
  16. /environment/<int:env_id>
  17. :return:
  18. """
  19. super(ServerAPI, self).get()
  20. return self.item(id) if id else self.list()
  21. def list(self):
  22. """
  23. fetch environment list
  24. :return:
  25. """
  26. page = int(request.args.get('page', 0))
  27. page = page - 1 if page else 0
  28. size = float(request.args.get('size', 10))
  29. kw = request.values.get('kw', '')
  30. server_model = ServerModel()
  31. server_list, count = server_model.list(page=page, size=size, kw=kw)
  32. return self.list_json(list=server_list, count=count)
  33. def item(self, id):
  34. """
  35. 获取某个用户组
  36. :param id:
  37. :return:
  38. """
  39. server_model = ServerModel(id=id)
  40. server_info = server_model.item()
  41. if not server_info:
  42. return self.render_json(code=-1)
  43. return self.render_json(data=server_info)
  44. def post(self):
  45. """
  46. create a environment
  47. /environment/
  48. :return:
  49. """
  50. super(ServerAPI, self).post()
  51. form = ServerForm(request.form, csrf_enabled=False)
  52. if form.validate_on_submit():
  53. server_new = ServerModel()
  54. id = server_new.add(name=form.name.data, host=form.host.data)
  55. if not id:
  56. return self.render_json(code=-1)
  57. return self.render_json(data=server_new.item(id))
  58. else:
  59. return self.render_json(code=-1, message=form.errors)
  60. def put(self, id):
  61. """
  62. update environment
  63. /environment/<int:id>
  64. :return:
  65. """
  66. super(ServerAPI, self).put()
  67. form = ServerForm(request.form, csrf_enabled=False)
  68. form.set_id(id)
  69. if form.validate_on_submit():
  70. server = ServerModel(id=id)
  71. ret = server.update(name=form.name.data, host=form.host.data)
  72. return self.render_json(data=server.item())
  73. else:
  74. return self.render_json(code=-1, message=form.errors)
  75. def delete(self, id):
  76. """
  77. remove an environment
  78. /environment/<int:id>
  79. :return:
  80. """
  81. super(ServerAPI, self).delete()
  82. server_model = ServerModel(id=id)
  83. server_model.remove(id)
  84. return self.render_json(message='')