diff --git a/api/lib/cmdb/preference.py b/api/lib/cmdb/preference.py index 91d0970..3597ea6 100644 --- a/api/lib/cmdb/preference.py +++ b/api/lib/cmdb/preference.py @@ -114,8 +114,10 @@ class PreferenceManager(object): def get_relation_view(): views = PreferenceRelationView.get_by(to_dict=True) result = dict() + name2id = list() for view in views: result.setdefault(view['name'], []).extend(json.loads(view['cr_ids'])) + name2id.append([view['name'], view['id']]) id2type = dict() for view_name in result: @@ -129,7 +131,7 @@ class PreferenceManager(object): for type_id in id2type: id2type[type_id] = CITypeCache.get(type_id).to_dict() - return result, id2type + return result, id2type, sorted(name2id, key=lambda x: x[1]) @classmethod def create_or_update_relation_view(cls, name, cr_ids): diff --git a/api/views/cmdb/preference.py b/api/views/cmdb/preference.py index 3a39717..3bb0f43 100644 --- a/api/views/cmdb/preference.py +++ b/api/views/cmdb/preference.py @@ -71,18 +71,18 @@ class PreferenceRelationApiView(APIView): url_prefix = "/preference/relation/view" def get(self): - views, id2type = PreferenceManager.get_relation_view() + views, id2type, name2id = PreferenceManager.get_relation_view() - return self.jsonify(views=views, id2type=id2type) + return self.jsonify(views=views, id2type=id2type, name2id=name2id) @role_required(RoleEnum.CONFIG) @args_required("name") def post(self): name = request.values.get("name") cr_ids = request.values.get("cr_ids") - views, id2type = PreferenceManager.create_or_update_relation_view(name, cr_ids) + views, id2type, name2id = PreferenceManager.create_or_update_relation_view(name, cr_ids) - return self.jsonify(views, id2type) + return self.jsonify(views=views, id2type=id2type, name2id=name2id) def put(self): return self.post()