server.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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.server import ServerModel
  12. from walle.service.extensions import permission
  13. from walle.service.rbac.role import *
  14. class ServerAPI(SecurityResource):
  15. @permission.upper_developer
  16. def get(self, id=None):
  17. """
  18. fetch server list or one item
  19. /server/<int:env_id>
  20. :return:
  21. """
  22. super(ServerAPI, self).get()
  23. return self.item(id) if id else self.list()
  24. @permission.upper_developer
  25. def list(self):
  26. """
  27. fetch server list
  28. :return:
  29. """
  30. page = int(request.args.get('page', 0))
  31. page = page - 1 if page else 0
  32. size = int(request.args.get('size', 10))
  33. kw = request.values.get('kw', '')
  34. server_model = ServerModel()
  35. server_list, count = server_model.list(page=page, size=size, kw=kw)
  36. return self.list_json(list=server_list, count=count, enable_create=permission.role_upper_developer())
  37. def item(self, id):
  38. """
  39. 获取某个用户组
  40. :param id:
  41. :return:
  42. """
  43. server_model = ServerModel(id=id)
  44. server_info = server_model.item()
  45. if not server_info:
  46. return self.render_json(code=-1)
  47. return self.render_json(data=server_info)
  48. def post(self):
  49. """
  50. create a server
  51. /server/
  52. :return:
  53. """
  54. super(ServerAPI, self).post()
  55. form = ServerForm(request.form, csrf=False)
  56. if form.validate_on_submit():
  57. server_new = ServerModel()
  58. data = form.form2dict()
  59. id = server_new.add(data)
  60. if not id:
  61. return self.render_json(code=-1)
  62. return self.render_json(data=server_new.item(id))
  63. else:
  64. return self.render_json(Code.form_error, message=form.errors)
  65. @permission.upper_developer
  66. def put(self, id):
  67. """
  68. update server
  69. /server/<int:id>
  70. :return:
  71. """
  72. super(ServerAPI, self).put()
  73. form = ServerForm(request.form, csrf=False)
  74. form.set_id(id)
  75. if form.validate_on_submit():
  76. server = ServerModel().get_by_id(id)
  77. data = form.form2dict()
  78. ret = server.update(data)
  79. return self.render_json(data=server.item())
  80. else:
  81. return self.render_error(code=Code.form_error, message=form.errors)
  82. @permission.upper_developer
  83. def delete(self, id):
  84. """
  85. remove an server
  86. /server/<int:id>
  87. :return:
  88. """
  89. super(ServerAPI, self).delete()
  90. server_model = ServerModel(id=id)
  91. server_model.remove(id)
  92. return self.render_json(message='')