def patch(self, request, **kwargs): """ 修改树形结构,ID不能重复 """ try: body = request.data['body'] mode = request.data['mode'] relation = models.Relation.objects.get(id=kwargs['pk']) relation.tree = body relation.save() except KeyError: return Response(response.KEY_MISS) except ObjectDoesNotExist: return Response(response.SYSTEM_ERROR) # mode -> True remove node if mode: prepare.tree_end(request.data, relation.project) response.TREE_UPDATE_SUCCESS['tree'] = body response.TREE_UPDATE_SUCCESS['max'] = get_tree_max_id(body) return Response(response.TREE_UPDATE_SUCCESS)
def get(self, request, **kwargs): """ 返回树形结构 当前最带节点ID """ try: print(request.query_params['type']) for k,v in kwargs.items(): print(k,v) tree_type = request.query_params['type'] tree = models.Relation.objects.get(project__id=kwargs['pk'], type=tree_type) except KeyError: return Response(response.KEY_MISS) except ObjectDoesNotExist: return Response(response.SYSTEM_ERROR) print(tree) print(type(tree)) body = eval(tree.tree) # list print(body) tree = { "tree": body, "id": tree.id, "success": True, "max": get_tree_max_id(body) } return Response(tree)
def get(self, request, **kwargs): """ 返回树形结构 当前最带节点ID """ try: tree_type = request.query_params['type'] except KeyError: return Response(response.KEY_MISS) try: tree = models.Relation.objects.get(project_id=kwargs['pk'], type=tree_type) body = eval(tree.tree) except ObjectDoesNotExist as e: tree = models.Relation.objects.create(project_id=kwargs['pk'], type=tree_type, tree=[{ 'id': 1, 'label': 'testdata', 'children': [] }]) body = [] tree = { "tree": body, "id": tree.id, "success": True, "max": get_tree_max_id(body) } return Response(tree)
def create_relation_id(self, project_id): category_id_name_mapping: dict = self.get_category_id_name_mapping() obj = models.Relation.objects.get(project_id=project_id, type=1) eval_tree: list = eval(obj.tree) yapi_catids: list = [yapi_catid for yapi_catid in get_all_ycatid(eval_tree, [])] if category_id_name_mapping is None: return for cat_id, cat_name in category_id_name_mapping.items(): if cat_id not in yapi_catids: tree_id = get_tree_max_id(eval_tree) base_tree_node = { "id": tree_id+1, "yapi_catid": cat_id, "label": cat_name, "children": [] } eval_tree.append(base_tree_node) obj.tree = json.dumps(eval_tree, ensure_ascii=False) obj.save()