1 from api.utils import never_cache
3 from django.http import Http404, JsonResponse
4 from django.shortcuts import render, get_object_or_404
5 from django.views.decorators import cache
6 import catalogue.models
7 from wolnelektury.utils import is_ajax
8 from bookmarks import models
11 from rest_framework.generics import ListAPIView, ListCreateAPIView, RetrieveUpdateDestroyAPIView
12 from rest_framework import serializers
13 from rest_framework.permissions import IsAuthenticated
14 from api.fields import AbsoluteURLField
17 class BookmarkSerializer(serializers.ModelSerializer):
18 book = serializers.SlugRelatedField(queryset=catalogue.models.Book.objects.all(), slug_field='slug')
19 href = AbsoluteURLField(view_name='api_bookmark', view_args=['uuid'])
22 model = models.Bookmark
23 fields = ['book', 'anchor', 'note', 'href', 'uuid', 'location']
24 read_only_fields = ['uuid']
29 class BookmarksView(ListCreateAPIView):
30 permission_classes = [IsAuthenticated]
31 serializer_class = BookmarkSerializer
33 def get_queryset(self):
34 return self.request.user.bookmark_set.all()
36 def perform_create(self, serializer):
37 serializer.save(user=self.request.user)
41 class BookBookmarksView(ListAPIView):
42 permission_classes = [IsAuthenticated]
43 serializer_class = BookmarkSerializer
44 pagination_class = None
46 def get_queryset(self):
47 return self.request.user.bookmark_set.filter(book__slug=self.kwargs['book'])
51 class BookmarkView(RetrieveUpdateDestroyAPIView):
52 permission_classes = [IsAuthenticated]
53 serializer_class = BookmarkSerializer
56 def get_queryset(self):
57 return self.request.user.bookmark_set.all()