environment.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from flask import Blueprint, g
  2. from libs.tools import json_response, JsonParser
  3. from apps.configuration.models import Environment
  4. from libs.decorators import require_permission
  5. blueprint = Blueprint(__name__, __name__)
  6. @blueprint.route('/', methods=['GET'])
  7. @require_permission('config_environment_view | publish_app_ctr_view | publish_app_var_view')
  8. def get():
  9. envs = Environment.query.all()
  10. return json_response(envs)
  11. # 专为发布页面的选择环境提供的接口,需要发布权限,限制返回的环境列表
  12. @blueprint.route('/with_publish_permission', methods=['GET'])
  13. @require_permission('publish_app_publish_view')
  14. def get_with_permission():
  15. envs = Environment.query.all()
  16. if not g.user.is_supper:
  17. env_ids = g.user.role.env_ids
  18. if env_ids:
  19. envs = Environment.query.filter(Environment.id.in_(env_ids.split(','))).all()
  20. else:
  21. envs = []
  22. return json_response(envs)
  23. @blueprint.route('/', methods=['POST'])
  24. @require_permission('config_environment_add')
  25. def post():
  26. form, error = JsonParser('name', 'identify', 'desc', 'priority').parse()
  27. if error is None:
  28. env = Environment(**form)
  29. env.save()
  30. return json_response(env)
  31. return json_response(message=error)
  32. @blueprint.route('/<int:env_id>', methods=['PUT'])
  33. @require_permission('config_environment_edit')
  34. def put(env_id):
  35. form, error = JsonParser('name', 'identify', 'desc', 'priority').parse()
  36. if error is None:
  37. env = Environment.query.get_or_404(env_id)
  38. env.update(**form)
  39. env.save()
  40. return json_response(env)
  41. return json_response(message=error)
  42. @blueprint.route('/<int:env_id>', methods=['DELETE'])
  43. @require_permission('config_environment_del')
  44. def delete(env_id):
  45. # 需要大量的关联判断,临时关闭删除
  46. return json_response(message='为了安全,已暂时关闭删除环境功能!')
  47. #env = Environment.query.get_or_404(env_id)
  48. #env.delete()
  49. #return json_response()