X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/76d3bbd6c7c2dfffb227f8fce87da80c62f61799..b45c2d25c0a77cf8d156a3cca422625ccbc989e3:/src/catalogue/api/views.py diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index e45f80e75..b2734d941 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -6,7 +6,7 @@ import os.path from urllib.request import urlopen from django.conf import settings from django.core.files.base import ContentFile -from django.http import Http404, HttpResponse +from django.http import Http404, HttpResponse, JsonResponse from django.utils.decorators import method_decorator from django.views.decorators.cache import never_cache from django_filters import rest_framework as dfilters @@ -198,6 +198,11 @@ class BookFilter(dfilters.FilterSet): queryset=Tag.objects.filter(category__in=('author', 'epoch', 'genre', 'kind')), conjoined=True, ) + translator = dfilters.ModelMultipleChoiceFilter( + field_name='translators', + queryset=Tag.objects.filter(category='author'), + conjoined=True, + ) class BookList2(ListAPIView): @@ -517,3 +522,21 @@ class BookFragmentView(RetrieveAPIView): book = get_object_or_404(Book, slug=self.kwargs['slug']) return book.choose_fragment() + +class BookMediaView(ListAPIView): + serializer_class = serializers.MediaSerializer2 + pagination_class = None + + def get_queryset(self): + 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}) +