Onepager: when no wiki link.
[wolnelektury.git] / src / catalogue / api / views.py
index 8cd2b6e..2d7fe7d 100644 (file)
@@ -190,7 +190,7 @@ class BookFilter(dfilters.FilterSet):
     sort = dfilters.OrderingFilter(
         fields=(
             ('sort_key_author', 'alpha'),
-            ('popularity', 'popularity'),
+            ('popularity__count', 'popularity'),
         )
     )
     tag = dfilters.ModelMultipleChoiceFilter(
@@ -203,6 +203,7 @@ class BookFilter(dfilters.FilterSet):
         queryset=Tag.objects.filter(category='author'),
         conjoined=True,
     )
+    has_audio = dfilters.BooleanFilter()
 
 
 class BookList2(ListAPIView):
@@ -235,7 +236,7 @@ class BookRecommendationsView(ListAPIView):
             Book,
             slug=self.kwargs['slug']
         )
-        return book.recommended(limit=3)
+        return book.get_recommended(limit=3)
 
 
 class BookList11Labs(BookList2):
@@ -556,6 +557,15 @@ class BookFragmentView(RetrieveAPIView):
         return book.choose_fragment()
 
 
+class BookChildrenView(ListAPIView):
+    serializer_class = serializers.BookSerializer2
+    pagination_class = None
+
+    def get_queryset(self):
+        book = get_object_or_404(Book, slug=self.kwargs['slug'])
+        return book.get_children()
+
+
 class BookMediaView(ListAPIView):
     serializer_class = serializers.MediaSerializer2
     pagination_class = None
@@ -574,5 +584,5 @@ from rest_framework.views import APIView
 class BookJsonView(APIView):
     def get(self, request, slug):
         book = get_object_or_404(Book, slug=slug)
-        js = conv(etree.parse(book.xml_file.path))
+        js = conv(etree.parse(book.xml_file.path), slug)
         return JsonResponse(js, json_dumps_params={'ensure_ascii': False})