fix stats calc
[wolnelektury.git] / src / catalogue / api / views.py
index 941b122..e5005e2 100644 (file)
@@ -226,6 +226,18 @@ class BookList2(ListAPIView):
         return books
 
 
         return books
 
 
+class BookRecommendationsView(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_recommended(limit=3)
+
+
 class BookList11Labs(BookList2):
     serializer_class = serializers.BookSerializer11Labs
 
 class BookList11Labs(BookList2):
     serializer_class = serializers.BookSerializer11Labs
 
@@ -257,7 +269,10 @@ class BookSyncView(RetrieveAPIView):
 
     def retrieve(self, request, *args, **kwargs):
         instance = self.get_object()
 
     def retrieve(self, request, *args, **kwargs):
         instance = self.get_object()
-        return Response(json.loads(instance.get_sync()))
+        return Response([
+            {"id": i, "timestamp": ts}
+            for (i, ts) in instance.get_sync()
+        ])
 
     
 @vary_on_auth  # Because of embargo links.
 
     
 @vary_on_auth  # Because of embargo links.
@@ -541,6 +556,15 @@ class BookFragmentView(RetrieveAPIView):
         return book.choose_fragment()
 
 
         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
 class BookMediaView(ListAPIView):
     serializer_class = serializers.MediaSerializer2
     pagination_class = None