diff --git a/server/proj/audio/serializers.py b/server/proj/audio/serializers.py index 751389f..1bc4e42 100644 --- a/server/proj/audio/serializers.py +++ b/server/proj/audio/serializers.py @@ -4,7 +4,7 @@ from .models import Song, FavoriteSong class SongSerializer(serializers.ModelSerializer): class Meta: model = Song - fields = ('id', 'unique_id', 'azura_id', 'title', 'artist', 'album', 'genre', 'art') + fields = ('id', 'unique_id', 'title', 'artist', 'album', 'genre', 'art') class FavoriteSongSerializer(serializers.ModelSerializer): diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index e71bc85..58132c7 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -13,34 +13,34 @@ from .models import Song, FavoriteSong from .serializers import SongSerializer, FavoriteSongSerializer class SongViewSet(GenericViewSet): + queryset = Song.objects.all() serializer_class = SongSerializer permission_classes = (IsAuthenticated,) - queryset = Song.objects.all() def list(self, request): songs_pk = FavoriteSong.objects.filter(user=request.user, song__isnull=False).values_list('song_id', flat=True) - queryset = Song.objects.filter(id__in=songs_pk) - serializer = SongSerializer(queryset, many=True) + songs = Song.objects.filter(id__in=songs_pk) + serializer = SongSerializer(songs, many=True) return Response(serializer.data) def retrieve(self, request, pk=None): try: song_obj = Song.objects.get(azura_id=pk) - queryset = FavoriteSong.objects.get(user=request.user, song=song_obj) + favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) - serializer = FavoriteSongSerializer(queryset) + serializer = FavoriteSongSerializer(favorite_songs) return Response(serializer.data) @action(detail=False, methods=['post'], schema=SongSchema()) - def create_song(self, request): - song = get_object_or_404(Song, azura_id=request.data['azura_id']) + def add_favorite(self, request): + song = get_object_or_404(Song, azura_id=request.data.get('azura_id')) data = None #Если трек есть в базе if song: data = { - "song": song.pk, - "user": request.user.pk + "song": song, + "user": request.user } #Если трека нету в базе else: @@ -52,13 +52,13 @@ class SongViewSet(GenericViewSet): response = requests.get(file_url, headers=headers) data = request.data file_play = f"http://82.97.242.49:10084/api/station/it-radio/file/{response.json()['unique_id']}/play" - data.update(unique_id = file_play) - serializer = SongSerializer(data=data) + data.update(unique_id=file_play) + serializer = self.get_serializer_class(data=data) if serializer.is_valid(): serializer.save() data = { "song": serializer.data['id'], - "user": request.user.pk + "user": request.user } serializer = FavoriteSongSerializer(data=data) if serializer.is_valid(): @@ -69,10 +69,13 @@ class SongViewSet(GenericViewSet): @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) + try: + item = FavoriteSong.objects.get(user=request.user, song=request.data.get('song_id')) + item.delete() + return Response(status=status.HTTP_202_ACCEPTED) + except ObjectDoesNotExist: + return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) + \ No newline at end of file