|
@@ -1,14 +1,21 @@
|
|
|
from rest_framework import viewsets
|
|
|
-
|
|
|
+from rest_framework import generics
|
|
|
+from rest_framework.views import APIView
|
|
|
+from rest_framework import status
|
|
|
+from rest_framework.response import Response
|
|
|
from .filters import AlbumFilter, ArtistFilter, TrackFilter
|
|
|
-from .models import Album, Artist, Track
|
|
|
-from .serializers import AlbumSerializer, ArtistSerializer, TrackSerializer
|
|
|
+from .models import Album, Artist, Track,Playlist,PlaylistTrack
|
|
|
+from .serializers import AlbumSerializer, ArtistSerializer, TrackSerializer, PlaylistSerializer, UpdatePlaylistSerializer,PlaylistCreateSerializer
|
|
|
|
|
|
|
|
|
class BaseAPIViewSet(viewsets.ReadOnlyModelViewSet):
|
|
|
lookup_field = "uuid"
|
|
|
lookup_url_kwarg = "uuid"
|
|
|
|
|
|
+class BaseAPIViewSet1(viewsets.ModelViewSet):
|
|
|
+ lookup_field = "uuid"
|
|
|
+ lookup_url_kwarg = "uuid"
|
|
|
+
|
|
|
|
|
|
class ArtistViewSet(BaseAPIViewSet):
|
|
|
queryset = Artist.objects.all()
|
|
@@ -34,3 +41,57 @@ class TrackViewSet(BaseAPIViewSet):
|
|
|
def get_queryset(self):
|
|
|
queryset = super().get_queryset()
|
|
|
return queryset.select_related("album", "album__artist")
|
|
|
+
|
|
|
+
|
|
|
+class FetchPlaylist(BaseAPIViewSet1):
|
|
|
+ queryset = Playlist.objects.all()
|
|
|
+ serializer_class = PlaylistSerializer
|
|
|
+
|
|
|
+ def get_queryset(self):
|
|
|
+ queryset = super().get_queryset()
|
|
|
+ return queryset
|
|
|
+
|
|
|
+
|
|
|
+class UpdatePlaylist(generics.UpdateAPIView):
|
|
|
+ """ update for only playlist name """
|
|
|
+ queryset = Playlist.objects.all()
|
|
|
+ serializer_class = UpdatePlaylistSerializer
|
|
|
+
|
|
|
+ def get_object(self, *args, **kwargs):
|
|
|
+ try:
|
|
|
+ playlist = Playlist.objects.filter(uuid=self.request.data['uuid']).get()
|
|
|
+ except Playlist.DoesNotExist:
|
|
|
+ return None
|
|
|
+ return playlist
|
|
|
+
|
|
|
+ def update(self, request, *args, **kwargs):
|
|
|
+ playlist = self.get_object()
|
|
|
+ if playlist:
|
|
|
+ kwargs['partial'] = True
|
|
|
+ return super(UpdatePlaylist, self).update(request, *args, **kwargs)
|
|
|
+ else:
|
|
|
+ response = {'details':"uuid does not exist"}
|
|
|
+ return response
|
|
|
+
|
|
|
+class CreatePlaylist(generics.CreateAPIView):
|
|
|
+ '''
|
|
|
+ Playlist create using uuid and name
|
|
|
+ '''
|
|
|
+ serializer_class = PlaylistCreateSerializer
|
|
|
+
|
|
|
+ def create(self, request, *args, **kwargs):
|
|
|
+ response_data = super(CreatePlaylist, self).create(request, *args, **kwargs)
|
|
|
+ return response_data
|
|
|
+
|
|
|
+class DeletePlaylist(APIView):
|
|
|
+ '''
|
|
|
+ Playlist delete using the uuid
|
|
|
+ '''
|
|
|
+ def post(self,request,format=None):
|
|
|
+ try:
|
|
|
+ playlist=Playlist.objects.get(uuid=request.POST["uuid"])
|
|
|
+ playlist.delete()
|
|
|
+ response= {'details':"Playlist is deleted"}
|
|
|
+ except:
|
|
|
+ response= {'details':"Record does not exist"}
|
|
|
+ return Response(response)
|