diff --git a/src/documents/api.py b/src/documents/api.py index 2d741a3e7c97ad40af5e7290fd2165770cb49349..5ac88465751b8d8cf1c4b70a5be0f626aec04d28 100644 --- a/src/documents/api.py +++ b/src/documents/api.py @@ -48,25 +48,24 @@ class DocumentPages(ListAPIView): return Page.objects.get_descending(self.kwargs['pk']) -class SearchResultSetPagination(PageNumberPagination): - page_size = 10 - page_size_query_param = 'page_size' - max_page_size = 20 - - class TranscriptionSearch(ListAPIView): """ Search and list transcriptions, using pagination """ serializer_class = SearchResultSerializer - pagination_class = SearchResultSetPagination - @lru_cache(maxsize=10) def get_queryset(self): query = self.request.query_params.get('q') - if query: - return search_transcriptions(query) - return None + if not query: + return + return search_transcriptions(query) + + def add_parents(self, results): + ids = [trans.id for trans in results] + all_parents = Document.objects.get_ascendings(*ids) + for trans in results: + trans.parent_docs = all_parents[trans.id] + return results def list(self, request): queryset = self.get_queryset() @@ -76,10 +75,10 @@ class TranscriptionSearch(ListAPIView): # Handle pagination, if activated page = self.paginate_queryset(queryset) if page is not None: - serializer = self.get_serializer(page, many=True) + serializer = self.get_serializer(self.add_parents(page), many=True) return self.get_paginated_response(serializer.data) - serializer = self.get_serializer(queryset, many=True) + serializer = self.get_serializer(self.add_parents(queryset), many=True) return Response(serializer.data)