Skip to content
Snippets Groups Projects
views.py 1.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • from rest_framework import generics, mixins, viewsets
    from rest_framework import status
    from rest_framework.response import Response
    from rest_framework.decorators import detail_route
    
    from funkwhale_api.music.serializers import TrackSerializerNested
    from funkwhale_api.common.permissions import ConditionalAuthentication
    
    from . import models
    from . import serializers
    
    class ListeningViewSet(mixins.CreateModelMixin,
                              mixins.RetrieveModelMixin,
                              viewsets.GenericViewSet):
    
        serializer_class = serializers.ListeningSerializer
        queryset = models.Listening.objects.all()
        permission_classes = [ConditionalAuthentication]
    
        def get_queryset(self):
            queryset = super().get_queryset()
    
            if self.request.user.is_authenticated:
    
                return queryset.filter(user=self.request.user)
            else:
                return queryset.filter(session_key=self.request.session.session_key)
    
        def get_serializer_context(self):
            context = super().get_serializer_context()
    
            if self.request.user.is_authenticated:
    
                context['user'] = self.request.user
            else:
                context['session_key'] = self.request.session.session_key
            return context