Esempio n. 1
0
def asset_detail(request, id, format=None):
    """
    Retrieve, update or delete a server assets instance.
    """
    try:
        snippet = Assets.objects.get(id=id)
    except Assets.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = serializers.AssetsSerializer(snippet)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = serializers.AssetsSerializer(snippet, data=request.data)
        if serializer.is_valid():
            serializer.save()
            recordAssets.delay(user=str(request.user),
                               content="更新资产:{name}".format(name=snippet.name),
                               type="assets",
                               id=id)
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        if not request.user.has_perm('OpsManage.delete_asset_assets'):
            return Response(status=status.HTTP_403_FORBIDDEN)
        snippet.delete()
        recordAssets.delay(user=str(request.user),
                           content="删除资产:{name}".format(name=snippet.name),
                           type="assets",
                           id=id)
        return Response(status=status.HTTP_204_NO_CONTENT)
Esempio n. 2
0
def asset_list(request,format=None):
    """
    List all order, or create a server assets order.
    """
    if request.method == 'GET':      
        snippets = Assets.objects.all()
        serializer = serializers.AssetsSerializer(snippets, many=True)
        return Response(serializer.data)     
    elif request.method == 'POST':
        serializer = serializers.AssetsSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            recordAssets.delay(user=str(request.user),content="添加资产:{name}".format(name=request.data.get("name")),type="assets",id=serializer.data.get('id'))  
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)    
Esempio n. 3
0
def assets_tags(request, id, format=None):
    """
    List all order, or create a server assets order.
    """
    try:
        snippet = Assets.objects.get(id=id)
        serializer = serializers.AssetsSerializer(snippet)
    except Assets.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'POST':
        tagsAssets = [
            s.tid.id for s in Tags_Server_Assets.objects.filter(aid=id)
        ]
        tList = [int(a) for a in request.data.get('ids', [])]
        for a in tList:
            if a not in tagsAssets:
                tags = Tags_Assets.objects.get(id=a)
                try:
                    Tags_Server_Assets.objects.create(aid=snippet, tid=tags)
                except Exception as ex:
                    logger.error(msg="修改资产标签分类失败: {ex}".format(ex=str(ex)))
                    return Response(
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        delList = list(set(tagsAssets).difference(set(tList)))
        for ds in delList:
            tags = Tags_Assets.objects.get(id=ds)
            Tags_Server_Assets.objects.filter(aid=snippet, tid=tags).delete()
        return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
Esempio n. 4
0
 def post(self, request, *args, **kwargs):
     if not request.user.has_perm('asset.assets_add_assets'):
         return Response(status=status.HTTP_403_FORBIDDEN)
     serializer = serializers.AssetsSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 5
0
def asset_server_detail(request, id, format=None):
    """
    Retrieve, update or delete a server assets instance.
    """
    try:
        snippet = Server_Assets.objects.get(id=id)
    except Server_Assets.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = serializers.ServerSerializer(snippet)
        return Response(serializer.data)

    elif request.method == 'PUT':
        '''如果更新字段包含assets则先更新总资产表'''
        if (request.data.get('data')):
            data = request.data.get('data')
        else:
            data = request.data
        if (data.get('assets')):
            assets_data = data.pop('assets')
            try:
                assets_snippet = Assets.objects.get(id=snippet.assets.id)
                assets = serializers.AssetsSerializer(assets_snippet,
                                                      data=assets_data)
            except Assets.DoesNotExist:
                return Response(status=status.HTTP_404_NOT_FOUND)
            if assets.is_valid():
                assets.save()
                recordAssets.delay(
                    user=str(request.user),
                    content="修改服务器资产:{ip}".format(ip=snippet.ip),
                    type="server",
                    id=id)
        serializer = serializers.ServerSerializer(snippet, data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        if not request.user.has_perm('OpsManage.can_delete_server_assets'):
            return Response(status=status.HTTP_403_FORBIDDEN)
        snippet.delete()
        try:
            assets_snippet = Assets.objects.get(id=snippet.assets.id)
            assets_snippet.delete()
            recordAssets.delay(user=str(request.user),
                               content="删除服务器资产:{ip}".format(ip=snippet.ip),
                               type="server",
                               id=id)
        except Assets.DoesNotExist:
            pass
        return Response(status=status.HTTP_204_NO_CONTENT)
Esempio n. 6
0
    def put(self, request, id, format=None):
        if (request.data.get('data')):
            data = request.data.get('data')
        else:
            data = request.data
        print(data)
        try:
            snippet = Server.objects.get(id=id)
        except Server.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        if (data.get('asset')):
            asset_data = data.pop('asset')

            try:

                asset_snippet = Asset.objects.get(id=snippet.asset.id)

                assets = serializers.AssetsSerializer(asset_snippet,
                                                      data=asset_data)
            except Asset.DoesNotExist:
                return Response(status=status.HTTP_404_NOT_FOUND)
            if assets.is_valid():
                assets.save()

                serializer = serializers.AssetsServerSerializer(snippet,
                                                                data=data)
                if serializer.is_valid():

                    serializer.save()
                    print(serializer.data)
                    return Response(
                        {
                            'status': 'success',
                            'data': serializer.data
                        },
                        status=status.HTTP_200_OK)

            return Response(assets.errors, status=status.HTTP_400_BAD_REQUEST)