relative view api [done]

This commit is contained in:
pycook
2019-11-22 18:18:22 +08:00
parent 617337c614
commit fd532626ac
5 changed files with 43 additions and 28 deletions

View File

@@ -4,10 +4,11 @@
from flask import request
from api.lib.cmdb.ci_type import CITypeManager
from api.lib.cmdb.const import ResourceType, PermEnum
from api.lib.cmdb.const import ResourceType, PermEnum, RoleEnum
from api.lib.cmdb.preference import PreferenceManager
from api.lib.decorator import args_required
from api.lib.perm.acl.acl import has_perm_from_args
from api.lib.perm.acl.acl import role_required
from api.lib.utils import handle_arg_list
from api.resource import APIView
@@ -18,6 +19,7 @@ class PreferenceShowCITypesView(APIView):
def get(self):
instance = request.values.get("instance")
tree = request.values.get("tree")
return self.jsonify(PreferenceManager.get_types(instance, tree))
@@ -26,6 +28,7 @@ class PreferenceShowAttributesView(APIView):
def get(self, id_or_name):
is_subscribed, attributes = PreferenceManager.get_show_attributes(id_or_name)
return self.jsonify(attributes=attributes, is_subscribed=is_subscribed)
@has_perm_from_args("id_or_name", ResourceType.CI, PermEnum.READ, CITypeManager.get_name_by_id)
@@ -35,12 +38,13 @@ class PreferenceShowAttributesView(APIView):
attr_list = handle_arg_list(request.values.get("attr", ""))
orders = list(range(len(attr_list)))
PreferenceManager.create_or_update_show_attributes(id_or_name, list(zip(attr_list, orders)))
return self.jsonify(type_id=id_or_name,
attr_order=list(zip(attr_list, orders)))
@has_perm_from_args("id_or_name", ResourceType.CI, PermEnum.READ, CITypeManager.get_name_by_id)
def put(self, id_or_name):
self.post(id_or_name)
return self.post(id_or_name)
class PreferenceTreeApiView(APIView):
@@ -56,33 +60,36 @@ class PreferenceTreeApiView(APIView):
type_id = request.values.get("type_id")
levels = handle_arg_list(request.values.get("levels"))
res = PreferenceManager.create_or_update_tree_view(type_id, levels)
return self.jsonify(res and res.to_dict() or {})
def put(self):
self.post()
return self.post()
class PreferenceRelationApiView(APIView):
url_prefix = "/preference/relation/view"
def get(self):
return self.jsonify(PreferenceManager.get_relation_view())
views, id2type = PreferenceManager.get_relation_view()
@has_perm_from_args("parent_id", ResourceType.CI, PermEnum.READ, CITypeManager.get_name_by_id)
@has_perm_from_args("child_id", ResourceType.CI, PermEnum.READ, CITypeManager.get_name_by_id)
return self.jsonify(views=views, id2type=id2type)
@role_required(RoleEnum.CONFIG)
@args_required("name")
def post(self):
name = request.values.get("name")
parent_id = request.values.get("parent_id")
child_id = request.values.get("child_id")
res = PreferenceManager.create_or_update_relation_view(name, parent_id, child_id)
return self.jsonify(res.to_dict())
cr_ids = request.values.get("cr_ids")
res = PreferenceManager.create_or_update_relation_view(name, cr_ids)
return self.jsonify(res)
def put(self):
self.post()
return self.post()
@args_required("name")
def delete(self):
name = request.values.get("name")
PreferenceManager.delete_relation_view(name)
return self.jsonify(name=name)