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)
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)
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)
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)
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)
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)