use ints for stats
[wolnelektury.git] / src / catalogue / api / views.py
index ed5d10f..e5005e2 100644 (file)
@@ -226,6 +226,18 @@ class BookList2(ListAPIView):
         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
 
@@ -251,6 +263,18 @@ class BookDetail2(RetrieveAPIView):
     serializer_class = serializers.BookSerializer2
 
 
+class BookSyncView(RetrieveAPIView):
+    queryset = Book.objects.all()
+    lookup_field = 'slug'
+
+    def retrieve(self, request, *args, **kwargs):
+        instance = self.get_object()
+        return Response([
+            {"id": i, "timestamp": ts}
+            for (i, ts) in instance.get_sync()
+        ])
+
+    
 @vary_on_auth  # Because of embargo links.
 class EbookList(BookList):
     serializer_class = serializers.EbookSerializer
@@ -532,6 +556,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
@@ -546,6 +579,7 @@ class BookMediaView(ListAPIView):
 from .tojson import conv
 from lxml import etree
 from rest_framework.views import APIView
+
 class BookJsonView(APIView):
     def get(self, request, slug):
         book = get_object_or_404(Book, slug=slug)