from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.authentication import SessionAuthentication from rest_framework.permissions import IsAuthenticated from playlist.models import Track from playlist.serializers import TrackSerializer class TrackListView(APIView): authentication_classes = [SessionAuthentication] permission_classes = [IsAuthenticated] def get(self, request): tracks = Track.objects.all() serializer = TrackSerializer(tracks, many=True, context={'request': request}) return Response(serializer.data) class TrackDetailView(APIView): authentication_classes = [SessionAuthentication] permission_classes = [IsAuthenticated] def get(self, request, id): track = Track.objects.get(pk=id) serializer = TrackSerializer(track, context={'request': request}) return Response(serializer.data) def put(self, request, id): track = Track.objects.get(pk=id) serializer = TrackSerializer(track, data=request.data, context={'request': request}) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400) def post(self, request): serializer = TrackSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400)