from rest_framework import permissions, viewsets from .models import Bookmark, Highlight, ReadingProgress from .serializers import ( BookmarkSerializer, HighlightSerializer, ReadingProgressSerializer, ReadingProgressUpdateSerializer, ) class BookmarkViewSet(viewsets.ModelViewSet): """User bookmarks for documents.""" serializer_class = BookmarkSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return Bookmark.objects.filter(user=self.request.user).select_related("document") def perform_create(self, serializer): serializer.save(user=self.request.user) class HighlightViewSet(viewsets.ModelViewSet): """User highlights for documents.""" serializer_class = HighlightSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return Highlight.objects.filter(user=self.request.user).select_related("document") def perform_create(self, serializer): serializer.save(user=self.request.user) class ReadingProgressViewSet(viewsets.ModelViewSet): """Reading progress tracker.""" permission_classes = [permissions.IsAuthenticated] def get_serializer_class(self): if self.action in ("create", "update", "partial_update"): return ReadingProgressUpdateSerializer return ReadingProgressSerializer def get_queryset(self): return ReadingProgress.objects.filter(user=self.request.user).select_related("document") def perform_create(self, serializer): serializer.save(user=self.request.user)