Esempio n. 1
0
    def get(self, request):
        """
        Return a list of all content libraries that the user has permission to view.
        """
        serializer = ContentLibraryFilterSerializer(data=request.query_params)
        serializer.is_valid(raise_exception=True)
        org = serializer.validated_data['org']
        library_type = serializer.validated_data['type']
        text_search = serializer.validated_data['text_search']

        paginator = LibraryApiPagination()
        queryset = api.get_libraries_for_user(request.user,
                                              org=org,
                                              library_type=library_type)
        if text_search:
            result = api.get_metadata_from_index(queryset,
                                                 text_search=text_search)
            result = paginator.paginate_queryset(result, request)
        else:
            # We can paginate queryset early and prevent fetching unneeded metadata
            paginated_qs = paginator.paginate_queryset(queryset, request)
            result = api.get_metadata_from_index(paginated_qs)

        serializer = ContentLibraryMetadataSerializer(result, many=True)
        # Verify `pagination` param to maintain compatibility with older
        # non pagination-aware clients
        if request.GET.get('pagination', 'false').lower() == 'true':
            return paginator.get_paginated_response(serializer.data)
        return Response(serializer.data)
Esempio n. 2
0
 def get(self, request):
     """
     Return a list of all content libraries that the user has permission to view.
     """
     paginator = LibraryRootPagination()
     queryset = api.get_libraries_for_user(request.user)
     paginated_qs = paginator.paginate_queryset(queryset, request)
     result = api.get_metadata_from_index(paginated_qs)
     serializer = ContentLibraryMetadataSerializer(result, many=True)
     # Verify `pagination` param to maintain compatibility with older
     # non pagination-aware clients
     if request.GET.get('pagination', 'false').lower() == 'true':
         return paginator.get_paginated_response(serializer.data)
     return Response(serializer.data)