38191-vm/core/api_views.py
2026-02-05 16:44:24 +00:00

33 lines
1.3 KiB
Python

from rest_framework import viewsets, permissions, filters
from django_filters.rest_framework import DjangoFilterBackend
from core.models import Bookmark, Team
from core.serializers import BookmarkSerializer, BookmarkDetailSerializer, TeamSerializer
from core.tasks import process_bookmark
class BookmarkViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.IsAuthenticated]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_fields = ['is_favorite']
search_fields = ['title', 'url', 'notes', 'extraction__content_text']
ordering_fields = ['created_at', 'updated_at', 'title']
ordering = ['-created_at']
def get_queryset(self):
return Bookmark.objects.filter(user=self.request.user).select_related('extraction')
def get_serializer_class(self):
if self.action == 'retrieve':
return BookmarkDetailSerializer
return BookmarkSerializer
def perform_create(self, serializer):
bookmark = serializer.save()
process_bookmark.delay(bookmark.id)
class TeamViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.IsAuthenticated]
serializer_class = TeamSerializer
def get_queryset(self):
return self.request.user.teams.all()