diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 7e1efa1..a9c23bb 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -15,6 +15,7 @@ class SongViewSet(ViewSet): permission_classes_by_action = { 'list': [IsAuthenticated], 'retrieve': [IsAuthenticated], + 'create_song': [IsAuthenticated] } def list(self, request): user_pk = request.user.pk @@ -29,23 +30,17 @@ class SongViewSet(ViewSet): serializer = FavoriteSongSerializer(queryset[0]) 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']) + data = None + #Если трек есть в базе if song: data = { "song": song[0].id, "user": request.user.pk } - serializer_1 = FavoriteSongSerializer(data=data) - if serializer_1.is_valid(): - serializer_1.save() - resp = serializer_1.data - resp.update(is_favorite=True) - return Response(resp, status=status.HTTP_201_CREATED) - else: - return Response(serializer_1.errors, status=status.HTTP_400_BAD_REQUEST) + #Если трека нету в базе else: file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" @@ -57,19 +52,19 @@ class SongViewSet(ViewSet): 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) - if serializer.is_valid(): serializer.save() data = { "song": song[0].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) + + serializer = FavoriteSongSerializer(data=data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + else: + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @action(detail=False, methods=['post'], schema=DeleteSongSchema()) def delete_song(self, request):