def list(self, request): """ List Agents Filter agents with query parameters. """ serializer = AgentQuery(data=request.GET) if serializer.is_valid(raise_exception=True): page = serializer.validated_data.get("page") per_page = serializer.validated_data.get("per_page") agent_status = serializer.validated_data.get("status") name = serializer.validated_data.get("name") agent_type = serializer.validated_data.get("type") organization = serializer.validated_data.get("organization") query_filters = {} if organization: if not request.user.is_operator: raise PermissionDenied() query_filters.update({"organization": organization}) else: org_name = ( request.user.organization.name if request.user.organization else "" ) if request.user.is_administrator: query_filters.update({"organization__name": org_name}) if name: query_filters.update({"name__icontains": name}) if agent_status: query_filters.update({"status": agent_status}) if agent_type: query_filters.update({"type": agent_type}) agents = Agent.objects.filter(**query_filters) p = Paginator(agents, per_page) agents = p.page(page) # agents = [agent.__dict__ for agent in agents] agent_list = [] for agent in agents: agent_dict = agent.__dict__ agent_dict.update( { "config_file": request.build_absolute_uri( agent.config_file.url ) } ) agent_list.append(agent_dict) response = AgentListResponse( data={"data": agent_list, "total": p.count} ) if response.is_valid(raise_exception=True): return Response( response.validated_data, status=status.HTTP_200_OK )
def list(self, request): """ List Agents Filter agents with query parameters. """ serializer = AgentQuery(data=request.GET) if serializer.is_valid(raise_exception=True): page = serializer.validated_data.get("page") per_page = serializer.validated_data.get("per_page") agent_status = serializer.validated_data.get("status") name = serializer.validated_data.get("name") agent_type = serializer.validated_data.get("type") organization = serializer.validated_data.get("organization") query_filters = {} if organization: if not request.user.is_operator: raise PermissionDenied() query_filters.update({"organization": organization}) else: org_name = ( request.user.organization.name if request.user.organization else "" ) if request.user.is_administrator: query_filters.update({"organization__name": org_name}) if name: query_filters.update({"name__icontains": name}) if agent_status: query_filters.update({"status": agent_status}) if agent_type: query_filters.update({"type": agent_type}) agents = Agent.objects.filter(**query_filters) p = Paginator(agents, per_page) agents = p.page(page) agents = [agent.__dict__ for agent in agents] response = AgentListResponse( data={"data": agents, "total": p.count} ) if response.is_valid(raise_exception=True): return Response( response.validated_data, status=status.HTTP_200_OK )
def list(self, request): """ List Agents :param request: query parameter :return: agent list :rtype: list """ serializer = AgentQuery(data=request.GET) if serializer.is_valid(raise_exception=True): page = serializer.validated_data.get("page") per_page = serializer.validated_data.get("per_page") agent_status = serializer.validated_data.get("status") name = serializer.validated_data.get("name") agent_type = serializer.validated_data.get("type") organization = serializer.validated_data.get("organization") query_filters = {} # if organization: # if not request.user.is_operator: # raise PermissionDenied() # query_filters.update({"organization": organization}) # else: # org_name = ( # request.user.organization.name # if request.user.organization # else "" # ) # if request.user.is_administrator: # query_filters.update({"organization__name": org_name}) if name: query_filters.update({"name__icontains": name}) if agent_status: query_filters.update({"status": agent_status}) if agent_type: query_filters.update({"type": agent_type}) if organization: query_filters.update({"organization": organization}) agents = Agent.objects.filter(**query_filters) p = Paginator(agents, per_page) agents = p.page(page) # agents = [agent.__dict__ for agent in agents] agent_list = [] # for agent in agents: # agent_dict = agent.__dict__ # agent_list.append(agent_dict) agent_list = [{ "id": agent.id, "name": agent.name, "status": agent.status, "type": agent.type, "urls": agent.urls, "organization": str(agent.organization.id) if agent.organization else None, "created_at": agent.created_at, } for agent in agents] response = AgentListResponse(data={ "data": agent_list, "total": p.count }) if response.is_valid(raise_exception=True): return Response(response.validated_data, status=status.HTTP_200_OK)