コード例 #1
0
ファイル: view.py プロジェクト: iamluiger/quipucords
    def inspection(self, request, pk=None):
        """Get the inspection results of a scan job."""
        ordering_filter, status_filter, source_id_filter = \
            self.handle_result_filters(request)

        try:
            scan_job = get_object_or_404(self.queryset, pk=pk)
            all_tasks = scan_job.inspection_results.task_results.all()
        except ValueError:
            return Response(status=400)
        system_result_queryset = None
        for task_result in all_tasks:
            if system_result_queryset is None:
                system_result_queryset = task_result.systems.all()
            else:
                system_result_queryset = \
                    system_result_queryset | task_result.systems.all()
        # create ordered queryset and assign the paginator
        paginator = StandardResultsSetPagination()
        ordered_query_set = system_result_queryset.order_by(ordering_filter)
        if status_filter:
            ordered_query_set = ordered_query_set.filter(status=status_filter)
        if source_id_filter:
            ordered_query_set = \
                ordered_query_set.filter(source__id=source_id_filter)

        page = paginator.paginate_queryset(ordered_query_set, request)

        if page is not None:
            serializer = SystemInspectionResultSerializer(page, many=True)
            for system in serializer.data:
                expand_system_inspection(system)
            return paginator.get_paginated_response(serializer.data)
        return Response(status=404)
コード例 #2
0
 def test_get_previous_link_value(self, mock_super):
     """Test the get previous link method when super returns a value."""
     expected = 'http://localhost:8000/api/v1/providers/?offset=20'
     mock_super.return_value = expected
     paginator = StandardResultsSetPagination()
     paginator.request = Mock
     paginator.request.META = {}
     link = paginator.get_previous_link()
     self.assertEqual(link, expected)
コード例 #3
0
 def test_link_no_rewrite(self):
     """Test the no link rewrite."""
     request = Mock()
     request.META = {}
     link = 'http://localhost:8000/api/v1/providers/?offset=20'
     result = StandardResultsSetPagination.link_rewrite(request, link)
     self.assertEqual(link, result)
コード例 #4
0
 def test_link_rewrite_err(self):
     """Test the link rewrite."""
     request = Mock()
     request.META = {PATH_INFO: 'https://localhost:8000/providers/'}
     link = 'http://localhost:8000/providers/?offset=20'
     result = StandardResultsSetPagination.link_rewrite(request, link)
     self.assertEqual(link, result)
コード例 #5
0
 def test_link_rewrite(self):
     """Test the link rewrite."""
     request = Mock()
     request.META = {PATH_INFO: '/api/v1/providers/'}
     link = 'http://localhost:8000/api/v1/providers/?page=2'
     expected = '/api/v1/providers/?page=2'
     result = StandardResultsSetPagination.link_rewrite(request, link)
     self.assertEqual(expected, result)
コード例 #6
0
 def test_link_rewrite(self):
     """Test the link rewrite."""
     request = Mock()
     request.META = {PATH_INFO: "/v1/providers/"}
     link = "http://localhost:8000/v1/providers/?offset=20"
     expected = "/v1/providers/?offset=20"
     result = StandardResultsSetPagination.link_rewrite(request, link)
     self.assertEqual(expected, result)
コード例 #7
0
def jobs(request, pk=None):
    """Get the jobs of a scan."""
    # pylint: disable=invalid-name
    if pk is not None:
        if not is_int(pk):
            return Response(status=status.HTTP_404_NOT_FOUND)
    result = []
    scan = get_object_or_404(Scan.objects.all(), pk=pk)
    if request.method == 'GET':
        job_queryset = get_job_queryset_query_set(scan,
                                                  request.query_params)
        paginator = StandardResultsSetPagination()
        page = paginator.paginate_queryset(job_queryset, request)

        if page is not None:
            serializer = ScanJobSerializer(page, many=True)
            for scan in serializer.data:
                json_scan = expand_scanjob(scan)
                result.append(json_scan)
            return paginator.get_paginated_response(serializer.data)

        for job in job_queryset:
            job_serializer = ScanJobSerializer(job)
            job_json = job_serializer.data
            job_json = expand_scanjob(job_serializer.data)
            result.append(job_json)
        return Response(result)
    else:
        job_data = {}
        job_data['scan'] = pk
        job_serializer = ScanJobSerializer(data=job_data)
        job_serializer.is_valid(raise_exception=True)
        job_serializer.save()
        scanjob_obj = ScanJob.objects.get(pk=job_serializer.data['id'])
        scanjob_obj.log_current_status()
        start_scan.send(sender=ScanViewSet.__class__, instance=scanjob_obj)

        return Response(job_serializer.data,
                        status=status.HTTP_201_CREATED)
コード例 #8
0
def get_paginator(request, count):
    """Get Paginator."""
    paginator = StandardResultsSetPagination()
    paginator.count = count
    paginator.request = request
    paginator.limit = _get_int_query_param(request, "limit", 10)
    paginator.offset = _get_int_query_param(request, "offset", 0)
    return paginator
コード例 #9
0
 def test_get_previous_link_none(self, mock_super):
     """Test the get previous link method when super returns none."""
     paginator = StandardResultsSetPagination()
     link = paginator.get_previous_link()
     self.assertIsNone(link)