diff --git a/server/proj/account/views.py b/server/proj/account/views.py index afe6cbf..3db2ba2 100644 --- a/server/proj/account/views.py +++ b/server/proj/account/views.py @@ -86,8 +86,7 @@ class MyUserViewSet(ViewSet): if check_password(request.data['password'], password): return Response( {'detail': 'Пароли одинаковые', 'error': {'email': 'Пароли одинаковые'}}, - - + status=status.HTTP_400_BAD_REQUEST) if 'email' in request.data: del request.data['email'] diff --git a/server/proj/audio/schemas.py b/server/proj/audio/schemas.py index cf823f4..b879b6f 100644 --- a/server/proj/audio/schemas.py +++ b/server/proj/audio/schemas.py @@ -64,9 +64,9 @@ class PlayListSchema(AutoSchema): schema=coreschema.Integer(description='ID плейлиста') ), coreapi.Field( - name='songs_id', + name='azura_id', location='form', required=False, - schema=coreschema.Array(description='ID треков') + schema=coreschema.String(description='ID трека с азуры') ), ] \ No newline at end of file diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index b8023ba..2d4f488 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -30,6 +30,28 @@ class PlayListViewSet(GenericViewSet): except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) + @action(detail=False, methods=['post'], schema=PlayListSchema()) + def add_to_playlist(self, request): + try: + song = list(Song.objects.filter(azura_id=request.data.get('azura_id')).values_list('pk', flat=True)) + except ObjectDoesNotExist: + return Response({"error": 'Песни не существует'}, status=status.HTTP_404_NOT_FOUND) + + try: + instance = PlayList.objects.get(pk=request.data.get('playlist_id')) + except ObjectDoesNotExist: + return Response({"error": 'Плейлиста не существует'}, status=status.HTTP_404_NOT_FOUND) + + songs = list(instance.song.all().values_list('pk', flat=True))+song + data = { + 'playlist_id': request.data.get('playlist_id'), + 'song': songs + } + serializer = PlayListSerializer(data=data, partial=True, instance=instance) + serializer.is_valid(raise_exception=True) + serializer.save() + return Response(serializer.data) + class SongViewSet(GenericViewSet): queryset = Song.objects.all()