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