From 533128e1f3d9a483f09a707573ccd66a79a6465a Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Thu, 20 Jun 2024 16:39:44 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=8B=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BB=D0=B5=D0=B9=D0=BB=D0=B8=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/account/views.py | 2 +- server/proj/audio/models.py | 2 +- server/proj/audio/views.py | 29 +++++++++++++++++++++++------ 3 files changed, 25 insertions(+), 8 deletions(-) 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):