X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e7d9b3875966262ee2e9eb6c281d2677a05a4e91..4c459c790ea52c2df629173946a8ddb80935ea32:/src/catalogue/api/views.py?ds=sidebyside diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index b2734d941..7457b6f1b 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -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}) -