from django.shortcuts import render from rest_framework.viewsets import ViewSet from rest_framework.response import Response from rest_framework.decorators import action from rest_framework import status from django.shortcuts import get_object_or_404 from .schemas import SongSchema, DeleteSongSchema from .models import Song, FavoriteSong from .serializers import SongSerializer, FavoriteSongSerializer class SongViewSet(ViewSet): def list(self, request): queryset = Song.objects.all() serializer = SongSerializer(queryset, many=True) return Response(serializer.data) @action(detail=False, methods=['post'], schema=SongSchema()) def create_song(self, request): """ song = Song.objects.filter( azura_id = request.data['azura_id'], title = request.data['title'], artist = request.data['artist'], album = request.data['album'], genre = request.data['genre'], art = request.data['art'] ) if song.exists(): data = { "song": serializer.data['id'], "user": request.user.pk } """ serializer = SongSerializer(data=request.data) if serializer.is_valid(): serializer.save() data = { "song": serializer.data['id'], "user": request.user.pk } serializer_1 = FavoriteSongSerializer(data=data) if serializer_1.is_valid(): serializer_1.save() return Response(serializer_1.data, status=status.HTTP_201_CREATED) else: return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['post'], schema=DeleteSongSchema()) def delete_song(self, request): song_id = request.data['song_id'] item = get_object_or_404(FavoriteSong, pk=song_id) item.delete() return Response(status=status.HTTP_202_ACCEPTED)