コード例 #1
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)
コード例 #2
0
def asset_server_list(request,format=None):
    """
    List all order, or create a server assets order.
    """

    if request.method == 'GET':      
        snippets = Server_Assets.objects.all()
        serializer = serializers.ServerSerializer(snippets, many=True)
        return Response(serializer.data)     
    elif request.method == 'POST':
        if(request.data.get('data')):
            data =  request.data.get('data')
        else:
            data = request.data
        serializer = serializers.ServerSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            recordAssets.delay(user=str(request.user),content="添加服务器资产:{ip}".format(ip=data.get("ip")),type="server",id=serializer.data.get('id'))  
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
コード例 #3
0
def asset_server_list(request, format=None):
    """
    List all order, or create a server assets order.
    """

    if request.method == 'GET':
        snippets = Server_Assets.objects.all()
        serializer = serializers.ServerSerializer(snippets, many=True)
        return Response(serializer.data)
    elif request.method == 'POST':
        if (request.data.get('data')):
            data = request.data.get('data')
        else:
            data = request.data
        serializer = serializers.ServerSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            recordAssets.delay(
                user=str(request.user),
                content="添加服务器资产:{ip}".format(ip=data.get("ip")),
                type="server",
                id=serializer.data.get('id'))
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        errors = ''
        # 错误只有键值非unique错误,目前只有assets中的资产名称(name)和server中的ip地址(ip)以及网络设备中的ip地址(ip)
        if 'assets' in serializer.errors:
            if 'name' in serializer.errors['assets']:
                errors += '【资产总表】中的【资产编号】已经存在<br/>'
            else:
                for k, v in serializer.errors['assets'].iteritems():
                    errors += '【资产总表】中的【%s】发生错误<br/>' % v
        if 'ip' in serializer.errors:
            errors += '【网络资产表】中的【IP地址】已经存在<br/>'
        if not ('ip' in serializer.errors) or not ('assets'
                                                   in serializer.errors):
            for k, v in serializer.errors.iteritems():
                errors += '【%s表】中的【%s】添加时发生错误<br/>' % (k, v)

        return Response(errors, status=status.HTTP_400_BAD_REQUEST)