environment.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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_new = EnvironmentModel()
  65. env_id = env_new.add(env_name=form.env_name.data, space_id=self.space_id)
  66. if not env_id:
  67. return self.render_json(code=-1)
  68. return self.render_json(data=env_new.item())
  69. else:
  70. return self.render_error(code=Code.form_error, message=form.errors)
  71. @permission.upper_master
  72. def put(self, env_id):
  73. """
  74. update environment
  75. /environment/<int:env_id>
  76. :return:
  77. """
  78. super(EnvironmentAPI, self).put()
  79. form = EnvironmentForm(request.form, csrf=False)
  80. form.set_env_id(env_id)
  81. if form.validate_on_submit():
  82. env = EnvironmentModel(id=env_id)
  83. ret = env.update(env_name=form.env_name.data, status=form.status.data)
  84. return self.render_json(data=env.item())
  85. else:
  86. return self.render_error(code=Code.form_error, message=form.errors)
  87. @permission.upper_master
  88. def delete(self, env_id):
  89. """
  90. remove an environment
  91. /environment/<int:env_id>
  92. :return:
  93. """
  94. super(EnvironmentAPI, self).delete()
  95. env_model = EnvironmentModel(id=env_id)
  96. env_model.remove(env_id)
  97. return self.render_json(message='')