def get_queryset(self):
tag_ids = self.request.GET.getlist('tag', [])
+ search = self.request.GET.get('search')
tags = [get_object_or_404(Tag, id=tid) for tid in tag_ids]
related_tags = list(t.id for t in get_top_level_related_tags(tags))
- return Tag.objects.filter(id__in=related_tags)
+ tags = Tag.objects.filter(id__in=related_tags)
+ if search:
+ tags = tags.filter(name__icontains=search)
+ return tags
+
+
+class BookFragmentView(RetrieveAPIView):
+ serializer_class = serializers.FragmentSerializer2
+
+ def get_object(self):
+ book = get_object_or_404(Book, slug=self.kwargs['slug'])
+ return book.choose_fragment()
+
+
+class BookMediaView(ListAPIView):
+ serializer_class = serializers.MediaSerializer2
+ pagination_class = None
+
+ def get_queryset(self):
+ return BookMedia.objects.filter(
+ book__slug=self.kwargs['slug'],
+ type=self.kwargs['type']
+ ).order_by('index')