from rest_framework import mixins, permissions, viewsets from rest_framework.decorators import action from rest_framework.response import Response from .models import Notification from .serializers import NotificationSerializer class NotificationViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): serializer_class = NotificationSerializer permission_classes = [permissions.IsAuthenticated] def get_queryset(self): return Notification.objects.filter(recipient=self.request.user).select_related("actor", "moment") @action(detail=False, methods=["get"], url_path="unread-count") def unread_count(self, request): count = self.get_queryset().filter(is_read=False).count() return Response({"unread_count": count}) @action(detail=False, methods=["post"], url_path="mark-read") def mark_read(self, request): self.get_queryset().filter(is_read=False).update(is_read=True) return Response(status=204)