environment.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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.environment import EnvironmentForm
  11. from walle.model.environment import EnvironmentModel
  12. from walle.service.extensions import permission
  13. from walle.service.rbac.role import *
  14. class EnvironmentAPI(SecurityResource):
  15. def get(self, env_id=None):
  16. """
  17. fetch environment list or one item
  18. /environment/<int:env_id>
  19. :return:
  20. """
  21. super(EnvironmentAPI, self).get()
  22. return self.item(env_id) if env_id else self.list()
  23. def list(self):
  24. """
  25. fetch environment list
  26. :return:
  27. """
  28. page = int(request.args.get('page', 0))
  29. page = page - 1 if page else 0
  30. size = int(request.args.get('size', 10))
  31. kw = request.values.get('kw', '')
  32. table = [
  33. {
  34. 'key': 'tag',
  35. 'value': ['线上', '测试'],
  36. 'sort': 0
  37. }
  38. ]
  39. env_model = EnvironmentModel()
  40. env_list, count = env_model.list(page=page, size=size, kw=kw, space_id=self.space_id)
  41. return self.list_json(list=env_list, count=count, table=table,
  42. enable_create=permission.role_upper_master() and current_user.role != SUPER)
  43. def item(self, env_id):
  44. """
  45. 获取某个用户组
  46. :param env_id:
  47. :return:
  48. """
  49. env_model = EnvironmentModel(id=env_id)
  50. env_info = env_model.item()
  51. if not env_info:
  52. return self.render_json(code=-1)
  53. return self.render_json(data=env_info)
  54. @permission.upper_master
  55. def post(self):
  56. """
  57. create a environment
  58. /environment/
  59. :return:
  60. """
  61. super(EnvironmentAPI, self).post()
  62. form = EnvironmentForm(request.form, csrf=False)
  63. if form.validate_on_submit():
  64. env = EnvironmentModel()
  65. data = form.form2dict()
  66. env_new = env.add(data)
  67. if not env_new:
  68. return self.render_json(code=-1)
  69. return self.render_json(data=env_new)
  70. else:
  71. return self.render_error(code=Code.form_error, message=form.errors)
  72. @permission.upper_master
  73. def put(self, env_id):
  74. """
  75. update environment
  76. /environment/<int:env_id>
  77. :return:
  78. """
  79. super(EnvironmentAPI, self).put()
  80. form = EnvironmentForm(request.form, csrf=False)
  81. form.set_env_id(env_id)
  82. if form.validate_on_submit():
  83. env = EnvironmentModel(id=env_id)
  84. data = form.form2dict()
  85. ret = env.update(env_name=form.env_name.data, status=form.status.data)
  86. return self.render_json(data=env.item())
  87. else:
  88. return self.render_error(code=Code.form_error, message=form.errors)
  89. @permission.upper_master
  90. def delete(self, env_id):
  91. """
  92. remove an environment
  93. /environment/<int:env_id>
  94. :return:
  95. """
  96. super(EnvironmentAPI, self).delete()
  97. env_model = EnvironmentModel(id=env_id)
  98. env_model.remove(env_id)
  99. return self.render_json(message='')