diff --git a/server/proj/account/views.py b/server/proj/account/views.py index 3db2ba2..ec5b6ea 100644 --- a/server/proj/account/views.py +++ b/server/proj/account/views.py @@ -86,8 +86,8 @@ 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'] if 'password' in request.data: diff --git a/server/proj/audio/models.py b/server/proj/audio/models.py index a9f1794..44aecc5 100644 --- a/server/proj/audio/models.py +++ b/server/proj/audio/models.py @@ -39,7 +39,7 @@ class FavoriteSong(models.Model): class PlayList(models.Model): - name = models.CharField('Название плейлиста', max_length=50) + name = models.CharField('Название плейлиста', max_length=50, blank=True, null=True) song = models.ManyToManyField(Song, blank=True, null=True) user = models.ForeignKey(MyUser, verbose_name='Пользователь', on_delete=models.CASCADE) art = models.ImageField('Изображение плейлиста', blank=True, null=True, upload_to="playlist_images/") diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 45d804f..4144a6e 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -34,12 +34,29 @@ class PlayListViewSet(GenericViewSet): @action(detail=False, methods=['post'], schema=PlayListSchema()) def create_playlist(self, request): - data = request.data - data.update(user=request.user.pk) - serializer = PlayListSerializer(data=request.data) - serializer.is_valid(raise_exception=True) - serializer.save() - return Response(serializer.data) + if request.data['name']: + try: + instance = PlayList.objects.get(pk=request.data['playlist_id'], user=request.user.pk) + data = request.data + data.update(user=request.user.pk) + serializer = self.get_serializer(data=request.data, instance=instance) + serializer.is_valid(raise_exception=True) + serializer.save() + return Response(serializer.data) + except ObjectDoesNotExist: + return Response( + {'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}}, + status=status.HTTP_404_NOT_FOUND) + else: + playlist_pk = self.get_queryset().objects.filter(user=request.user.pk) + number_playlist = len(playlist_pk) + 1 + name = f"Плейлист № {number_playlist}" + data = request.data + data.update(user=request.user.pk, name=name) + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save() + return Response(serializer.data) @action(detail=False, methods=['post'], schema=PlayListSchema()) def delete_playlist(self, request):