Prevent userlist duplicates
[wolnelektury.git] / src / catalogue / api / views.py
index b2734d9..7457b6f 100644 (file)
@@ -251,6 +251,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 json.loads(instance.get_sync())
+        ])
+
+    
 @vary_on_auth  # Because of embargo links.
 class EbookList(BookList):
     serializer_class = serializers.EbookSerializer
@@ -406,6 +418,15 @@ class KindView(RetrieveAPIView):
     queryset = Tag.objects.filter(category='kind')
     lookup_field = 'slug'
 
+class ThemeList(ListAPIView):
+    serializer_class = serializers.ThemeSerializer
+    queryset = Tag.objects.filter(category='theme')
+
+class ThemeView(RetrieveAPIView):
+    serializer_class = serializers.ThemeSerializer
+    queryset = Tag.objects.filter(category='theme')
+    lookup_field = 'slug'
+
 
 class TagView(RetrieveAPIView):
     permission_classes = [DjangoModelPermissionsOrAnonReadOnly]
@@ -528,15 +549,18 @@ class BookMediaView(ListAPIView):
     pagination_class = None
 
     def get_queryset(self):
-        return BookMedia.objects.filter(book__slug=self.kwargs['slug'], type=self.kwargs['type']).order_by('index')
+        return BookMedia.objects.filter(
+            book__slug=self.kwargs['slug'],
+            type=self.kwargs['type']
+        ).order_by('index')
 
 
 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)
         js = conv(etree.parse(book.xml_file.path))
         return JsonResponse(js, json_dumps_params={'ensure_ascii': False})
-