From 33330d0c9be168fc319aae9570be3b4cf54af053 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 14:27:04 +0500 Subject: [PATCH 01/27] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=80=D0=B8=D0=B4=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/README.md b/README.md index 7b929cd..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,32 +0,0 @@ -# ITRadio Project - -## ITRadio Backend - - -1. Start the virtual environment: - ``` - pip install -r requirements.txt - ``` -2. cd - ``` - cd ITRadioBackend - ``` -3. Run the server: - ``` - python manage.py runserver - ``` - -## ITRadio Frontend - -To run the frontend, navigate to the `ITRadioFrontend` directory and run the development server: - -```bash -cd ITRadioFrontendVue/ITRadioFrontend -npm run dev -``` - -## AzuraCast -AzuraCast is used in this project. For installation and getting started, visit the AzuraCast Documentation. -https://www.azuracast.com/docs/getting-started/installation/ - - From 6e54faf605985f9d51dcdf384e10155f4adf6bae Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 14:37:39 +0500 Subject: [PATCH 02/27] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=9C=D0=B8=D0=BA=D0=BE=D1=81=D0=B0...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index fc8dbd4..a2e818b 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render -from rest_framework.viewsets import ViewSet +from rest_framework.viewsets import ViewSet, GenericViewSet from rest_framework.response import Response from rest_framework.decorators import action from rest_framework import status @@ -11,34 +11,33 @@ from .schemas import SongSchema, DeleteSongSchema from .models import Song, FavoriteSong from .serializers import SongSerializer, FavoriteSongSerializer -class SongViewSet(ViewSet): +class SongViewSet(GenericViewSet): permission_classes_by_action = { 'list': [IsAuthenticated], 'retrieve': [IsAuthenticated], 'create_song': [IsAuthenticated] } + def list(self, request): - user_pk = request.user.pk - songs_pk = [i.song.pk for i in get_list_or_404(FavoriteSong, user=user_pk)] - queryset = Song.objects.filter(id__in = songs_pk) + 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) return Response(serializer.data) def retrieve(self, request, pk=None): - user_pk = request.user.pk song_obj = get_object_or_404(Song, azura_id=pk).pk - queryset = FavoriteSong.objects.filter(user=user_pk, song=song_obj) - serializer = FavoriteSongSerializer(queryset[0]) + queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) + serializer = FavoriteSongSerializer(queryset) 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']) + song = get_object_or_404(Song, azura_id=request.data['azura_id']) data = None #Если трек есть в базе if song: data = { - "song": song[0].id, + "song": song.pk, "user": request.user.pk } #Если трека нету в базе @@ -56,10 +55,9 @@ class SongViewSet(ViewSet): if serializer.is_valid(): serializer.save() data = { - "song": song[0].id, + "song": serializer.data['id'], "user": request.user.pk } - serializer = FavoriteSongSerializer(data=data) if serializer.is_valid(): serializer.save() From 6bd7251fdeba58d536c3bd0067a28a4f13da179c Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 14:47:06 +0500 Subject: [PATCH 03/27] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20try=20except=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1=D1=8A?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index a2e818b..b3711a3 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -3,6 +3,7 @@ from rest_framework.viewsets import ViewSet, GenericViewSet from rest_framework.response import Response from rest_framework.decorators import action from rest_framework import status +from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned from django.shortcuts import get_object_or_404, get_list_or_404 from rest_framework.permissions import IsAuthenticated import requests @@ -25,8 +26,14 @@ class SongViewSet(GenericViewSet): return Response(serializer.data) def retrieve(self, request, pk=None): - song_obj = get_object_or_404(Song, azura_id=pk).pk - queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) + try: + song_obj = Song.objects.get(azura_id=pk).pk + queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) + except ObjectDoesNotExist: + print("Объект не сушествует") + except MultipleObjectsReturned: + print("Найдено более одного объекта") + serializer = FavoriteSongSerializer(queryset) return Response(serializer.data) From 49084ba251b12242079b1c40e55c2743473390a4 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 14:48:14 +0500 Subject: [PATCH 04/27] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index b3711a3..d97dcfa 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -29,14 +29,13 @@ class SongViewSet(GenericViewSet): try: song_obj = Song.objects.get(azura_id=pk).pk queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) + serializer = FavoriteSongSerializer(queryset) + return Response(serializer.data) except ObjectDoesNotExist: print("Объект не сушествует") except MultipleObjectsReturned: print("Найдено более одного объекта") - serializer = FavoriteSongSerializer(queryset) - 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']) From fed0d327d266862e0479291aa1940f908dbaab74 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 14:50:08 +0500 Subject: [PATCH 05/27] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=BE=D0=B2=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index d97dcfa..57d2429 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -32,9 +32,9 @@ class SongViewSet(GenericViewSet): serializer = FavoriteSongSerializer(queryset) return Response(serializer.data) except ObjectDoesNotExist: - print("Объект не сушествует") + return Response('Объекта не существует') except MultipleObjectsReturned: - print("Найдено более одного объекта") + return Response('Найдено более одного объекта') @action(detail=False, methods=['post'], schema=SongSchema()) def create_song(self, request): From feb8b5f1681d7093d24b2f9f23348648355879f3 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 15:06:21 +0500 Subject: [PATCH 06/27] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=81=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=B9=20=D0=BA=D1=8D=D1=82=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 57d2429..f7aa425 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -29,12 +29,12 @@ class SongViewSet(GenericViewSet): try: song_obj = Song.objects.get(azura_id=pk).pk queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) - serializer = FavoriteSongSerializer(queryset) - return Response(serializer.data) except ObjectDoesNotExist: - return Response('Объекта не существует') + return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) except MultipleObjectsReturned: - return Response('Найдено более одного объекта') + return Response({"error": 'Найдено более одного объекта'}, status=status.HTTP_400_BAD_REQUEST) + serializer = FavoriteSongSerializer(queryset) + return Response(serializer.data) @action(detail=False, methods=['post'], schema=SongSchema()) def create_song(self, request): From c4c1d5a9cbb9a05798795a9d59de17cfe76b6032 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 15:42:54 +0500 Subject: [PATCH 07/27] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/conf.env | 4 ++++ server/proj/audio/views.py | 17 ++++++++++------- server/proj/conf/settings/base.py | 6 ++++-- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 server/conf.env diff --git a/server/conf.env b/server/conf.env new file mode 100644 index 0000000..fe23e3d --- /dev/null +++ b/server/conf.env @@ -0,0 +1,4 @@ +SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' +API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" +DEBUG = True +URL_PROD = http://82.97.242.49:10084 \ No newline at end of file diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index f7aa425..462a111 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -6,6 +6,8 @@ from rest_framework import status from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned from django.shortcuts import get_object_or_404, get_list_or_404 from rest_framework.permissions import IsAuthenticated +from decouple import config +from urllib.parse import urljoin import requests from .schemas import SongSchema, DeleteSongSchema @@ -20,8 +22,11 @@ class SongViewSet(GenericViewSet): } 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) + try: + 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) + except ObjectDoesNotExist: + return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) serializer = SongSerializer(queryset, many=True) return Response(serializer.data) @@ -31,8 +36,6 @@ class SongViewSet(GenericViewSet): queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) - except MultipleObjectsReturned: - return Response({"error": 'Найдено более одного объекта'}, status=status.HTTP_400_BAD_REQUEST) serializer = FavoriteSongSerializer(queryset) return Response(serializer.data) @@ -48,10 +51,10 @@ class SongViewSet(GenericViewSet): } #Если трека нету в базе else: - file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" - api_key = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" + file_url = urljoin(config('URL_PROD'), f'/api/station/it-radio/file/{request.data['azura_id']}') + API_KEY = config('API_KEY') headers = { - "Authorization": f"Bearer {api_key}" + "Authorization": f"Bearer {API_KEY}" } response = requests.get(file_url, headers=headers) data = request.data diff --git a/server/proj/conf/settings/base.py b/server/proj/conf/settings/base.py index 01920ee..a3c2b0e 100644 --- a/server/proj/conf/settings/base.py +++ b/server/proj/conf/settings/base.py @@ -1,5 +1,7 @@ from pathlib import Path import os +from decouple import config + # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent ROOT_DIR = BASE_DIR.parent.parent.parent @@ -14,10 +16,10 @@ MEDIA_URL = 'media/' STATIC_ROOT = PROJECT_DIR / 'static' STATIC_URL = 'static/' # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' +SECRET_KEY = config('SECRET_KEY') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = config('DEBUG', cast=bool) ALLOWED_HOSTS = ['*'] CORS_ORIGIN_ALLOW_ALL = True From 090d14b8e65bf73956f691d0f409cf399883ecfb Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:33:14 +0500 Subject: [PATCH 08/27] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 462a111..65bbeed 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -15,25 +15,20 @@ from .models import Song, FavoriteSong from .serializers import SongSerializer, FavoriteSongSerializer class SongViewSet(GenericViewSet): - permission_classes_by_action = { - 'list': [IsAuthenticated], - 'retrieve': [IsAuthenticated], - 'create_song': [IsAuthenticated] - } + serializer_class = SongSerializer + permission_classes = (IsAuthenticated,) + queryset = Song.objects.all() def list(self, request): - try: - 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) - except ObjectDoesNotExist: - return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) + 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) - return Response(serializer.data) + return Response(f"{request.build_absolute_uri()}") def retrieve(self, request, pk=None): try: - song_obj = Song.objects.get(azura_id=pk).pk - queryset = FavoriteSong.objects.get(user=request.user.pk, song=song_obj) + song_obj = Song.objects.get(azura_id=pk) + queryset = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) serializer = FavoriteSongSerializer(queryset) From 3486aa481f86213b153f00b55dfab9509d3f65e2 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:37:11 +0500 Subject: [PATCH 09/27] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 65bbeed..8bfabf9 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404, get_list_or_404 from rest_framework.permissions import IsAuthenticated from decouple import config from urllib.parse import urljoin +from django.http import HttpRequest import requests from .schemas import SongSchema, DeleteSongSchema @@ -23,7 +24,7 @@ class SongViewSet(GenericViewSet): 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) - return Response(f"{request.build_absolute_uri()}") + return Response(f"{HttpRequest.build_absolute_uri()}") def retrieve(self, request, pk=None): try: From 006a800e72ac9a42ef17ab108b8b443c152c076f Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:41:19 +0500 Subject: [PATCH 10/27] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D1=91=20=D0=BE=D0=B1=D1=80=D0=B0=D1=82=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 8bfabf9..b1839ac 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -8,7 +8,6 @@ from django.shortcuts import get_object_or_404, get_list_or_404 from rest_framework.permissions import IsAuthenticated from decouple import config from urllib.parse import urljoin -from django.http import HttpRequest import requests from .schemas import SongSchema, DeleteSongSchema @@ -24,7 +23,7 @@ class SongViewSet(GenericViewSet): 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) - return Response(f"{HttpRequest.build_absolute_uri()}") + return Response(serializer.data) def retrieve(self, request, pk=None): try: From 8fefaa0ef710a8f2e6511370c63d9849890958c4 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:45:33 +0500 Subject: [PATCH 11/27] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=20=D1=81=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8=20=D0=BE=D0=BA?= =?UTF-8?q?=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D0=B4?= =?UTF-8?q?=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=8E=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/{ => proj/conf}/conf.env | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename server/{ => proj/conf}/conf.env (100%) diff --git a/server/conf.env b/server/proj/conf/conf.env similarity index 100% rename from server/conf.env rename to server/proj/conf/conf.env From 5731f7316b68e0ec8e073c2b67049ad0ca8b6d70 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:46:23 +0500 Subject: [PATCH 12/27] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8,=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/conf/settings/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/proj/conf/settings/base.py b/server/proj/conf/settings/base.py index a3c2b0e..feeffba 100644 --- a/server/proj/conf/settings/base.py +++ b/server/proj/conf/settings/base.py @@ -16,10 +16,10 @@ MEDIA_URL = 'media/' STATIC_ROOT = PROJECT_DIR / 'static' STATIC_URL = 'static/' # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = config('SECRET_KEY') +SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = config('DEBUG', cast=bool) +DEBUG = True ALLOWED_HOSTS = ['*'] CORS_ORIGIN_ALLOW_ALL = True From d12a3b69f7c30a1f066febfe9748e1af02cec185 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 16:49:35 +0500 Subject: [PATCH 13/27] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D1=83=D0=BF=D0=BE=D0=BC=D0=B8=D0=BD=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20decouple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 6 ++---- server/proj/conf/conf.env | 4 ---- server/proj/conf/settings/base.py | 1 - 3 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 server/proj/conf/conf.env diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index b1839ac..6a41081 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -6,8 +6,6 @@ from rest_framework import status from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned from django.shortcuts import get_object_or_404, get_list_or_404 from rest_framework.permissions import IsAuthenticated -from decouple import config -from urllib.parse import urljoin import requests from .schemas import SongSchema, DeleteSongSchema @@ -46,8 +44,8 @@ class SongViewSet(GenericViewSet): } #Если трека нету в базе else: - file_url = urljoin(config('URL_PROD'), f'/api/station/it-radio/file/{request.data['azura_id']}') - API_KEY = config('API_KEY') + file_url = f'http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}' + API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" headers = { "Authorization": f"Bearer {API_KEY}" } diff --git a/server/proj/conf/conf.env b/server/proj/conf/conf.env deleted file mode 100644 index fe23e3d..0000000 --- a/server/proj/conf/conf.env +++ /dev/null @@ -1,4 +0,0 @@ -SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' -API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" -DEBUG = True -URL_PROD = http://82.97.242.49:10084 \ No newline at end of file diff --git a/server/proj/conf/settings/base.py b/server/proj/conf/settings/base.py index feeffba..d99fb5b 100644 --- a/server/proj/conf/settings/base.py +++ b/server/proj/conf/settings/base.py @@ -1,6 +1,5 @@ from pathlib import Path import os -from decouple import config # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent From 7be2ec75e1e19c8ff7e6dc965dd5e133357daf55 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:01:52 +0500 Subject: [PATCH 14/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 6a41081..546a442 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -44,7 +44,7 @@ class SongViewSet(GenericViewSet): } #Если трека нету в базе else: - file_url = f'http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}' + file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" headers = { "Authorization": f"Bearer {API_KEY}" From 500de25785b2c8e723ca3e69e3f0f327a9640def Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:03:12 +0500 Subject: [PATCH 15/27] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D0=BE=D0=B5=20=D0=BE=D0=B3=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 546a442..e71bc85 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -73,11 +73,6 @@ class SongViewSet(GenericViewSet): item = get_object_or_404(FavoriteSong, pk=song_id) item.delete() return Response(status=status.HTTP_202_ACCEPTED) - - def get_permissions(self): - try: - return [permission() for permission in self.permission_classes_by_action[self.action]] - except KeyError: - return [permission() for permission in self.permission_classes] + \ No newline at end of file From 177dcd0688e12abe40364052d6ff61ea0d1776e1 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:15:05 +0500 Subject: [PATCH 16/27] =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D1=80?= =?UTF-8?q?=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/serializers.py | 2 +- server/proj/audio/views.py | 35 +++++++++++++++++--------------- 2 files changed, 20 insertions(+), 17 deletions(-) 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 From 0aba2ba8914b41b35a72cf5a05b819ee03bcc13a Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:25:34 +0500 Subject: [PATCH 17/27] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=B2=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=B1=D1=80=D0=B0=D0=BD=D0=BD=D0=BE=D0=BC=20=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=20=D0=B8=D0=BB=D0=B8=20=D0=BD=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 58132c7..d2b2e9e 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -32,6 +32,18 @@ class SongViewSet(GenericViewSet): serializer = FavoriteSongSerializer(favorite_songs) return Response(serializer.data) + + @action(detail=False, methods=['GET'], schema=DeleteSongSchema()) + def check_is_favorite(self, request): + try: + song_obj = Song.objects.get(azura_id=request.data.get('azura_id')) + favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) + except ObjectDoesNotExist: + return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) + serializer = FavoriteSongSerializer(favorite_songs) + return Response(serializer.data) + + @action(detail=False, methods=['post'], schema=SongSchema()) def add_favorite(self, request): song = get_object_or_404(Song, azura_id=request.data.get('azura_id')) From 2e0d7f4e8242b1157a6ac9f5a5054ad6c3d7d183 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:26:22 +0500 Subject: [PATCH 18/27] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B8=D0=BF=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B2=20=D1=81=D1=85=D0=B5=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/schemas.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/schemas.py b/server/proj/audio/schemas.py index 2c840a5..a83b50e 100644 --- a/server/proj/audio/schemas.py +++ b/server/proj/audio/schemas.py @@ -50,6 +50,6 @@ class DeleteSongSchema(AutoSchema): name='song_id', location='form', required=False, - schema=coreschema.Integer(description='ID трека') + schema=coreschema.String(description='ID трека') ), ] \ No newline at end of file From 6cf0d304a74b6127ac5d30cb64d0ff2290024197 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:27:14 +0500 Subject: [PATCH 19/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B2?= =?UTF-8?q?=D0=BE=20=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index d2b2e9e..a1cad1e 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -36,7 +36,7 @@ class SongViewSet(GenericViewSet): @action(detail=False, methods=['GET'], schema=DeleteSongSchema()) def check_is_favorite(self, request): try: - song_obj = Song.objects.get(azura_id=request.data.get('azura_id')) + song_obj = Song.objects.get(azura_id=request.data.get('song_id')) favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) From 9a4f11969f3a5f238e18355a705a0b8e668d1562 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:31:02 +0500 Subject: [PATCH 20/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20?= =?UTF-8?q?=D0=B2=20=D0=B8=D0=B7=D0=B1=D1=80=D0=B0=D0=BD=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=20=D0=B8=D0=BB=D0=B8=20=D0=BD=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index a1cad1e..7094269 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -33,10 +33,15 @@ class SongViewSet(GenericViewSet): return Response(serializer.data) - @action(detail=False, methods=['GET'], schema=DeleteSongSchema()) + @action( + detail=False, + methods=['get'], + url_path='check_is_favorite/(?P[a-zA-Z0-9_]+)', + url_name='check_is_favorite', + ) def check_is_favorite(self, request): try: - song_obj = Song.objects.get(azura_id=request.data.get('song_id')) + song_obj = Song.objects.get(azura_id=request.data.get('azura_id')) favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) From f24de374f8b8f3d3c217c5b5ba26fd2537e695d5 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:42:19 +0500 Subject: [PATCH 21/27] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8B=D1=87=D0=BD=D1=83=D1=8E=20=D1=81=D1=85=D0=B5?= =?UTF-8?q?=D0=BC=D1=83=20=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=B1=D1=80=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 7094269..a1cad1e 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -33,15 +33,10 @@ class SongViewSet(GenericViewSet): return Response(serializer.data) - @action( - detail=False, - methods=['get'], - url_path='check_is_favorite/(?P[a-zA-Z0-9_]+)', - url_name='check_is_favorite', - ) + @action(detail=False, methods=['GET'], schema=DeleteSongSchema()) def check_is_favorite(self, request): try: - song_obj = Song.objects.get(azura_id=request.data.get('azura_id')) + song_obj = Song.objects.get(azura_id=request.data.get('song_id')) favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) From d96540134ee47b02308d6f8c83dbf11c1a03398f Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Mon, 10 Jun 2024 17:51:37 +0500 Subject: [PATCH 22/27] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BE=D0=B1=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index a1cad1e..acf8f1b 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -23,26 +23,21 @@ class SongViewSet(GenericViewSet): serializer = SongSerializer(songs, many=True) return Response(serializer.data) - def retrieve(self, request, pk=None): + @action( + detail=False, + methods=['get'], + url_path='check_is_favorite/(?P[a-zA-Z0-9_]+)', + url_name='check_is_favorite', + ) + def check_is_favorite(self, request, azura_id): try: - song_obj = Song.objects.get(azura_id=pk) + song_obj = Song.objects.get(azura_id=azura_id) favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) except ObjectDoesNotExist: return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) serializer = FavoriteSongSerializer(favorite_songs) return Response(serializer.data) - - - @action(detail=False, methods=['GET'], schema=DeleteSongSchema()) - def check_is_favorite(self, request): - try: - song_obj = Song.objects.get(azura_id=request.data.get('song_id')) - favorite_songs = FavoriteSong.objects.get(user=request.user, song=song_obj) - except ObjectDoesNotExist: - return Response({"error": 'Объекта не существует'}, status=status.HTTP_404_NOT_FOUND) - serializer = FavoriteSongSerializer(favorite_songs) - return Response(serializer.data) - + @action(detail=False, methods=['post'], schema=SongSchema()) def add_favorite(self, request): From 6c142fdd74680738366fd92f4034f167b0383c91 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Tue, 11 Jun 2024 10:48:17 +0500 Subject: [PATCH 23/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20404=20?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=85?= =?UTF-8?q?=D1=8D=D1=88=20=D0=B2=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/serializers.py | 2 +- server/proj/audio/views.py | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/server/proj/audio/serializers.py b/server/proj/audio/serializers.py index 1bc4e42..751389f 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', 'title', 'artist', 'album', 'genre', 'art') + fields = ('id', 'unique_id', 'azura_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 acf8f1b..2f86995 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -41,16 +41,14 @@ class SongViewSet(GenericViewSet): @action(detail=False, methods=['post'], schema=SongSchema()) def add_favorite(self, request): - song = get_object_or_404(Song, azura_id=request.data.get('azura_id')) - data = None - #Если трек есть в базе - if song: + data = None + try: + song = get_object_or_404(Song, azura_id=request.data.get('azura_id')) data = { "song": song, "user": request.user } - #Если трека нету в базе - else: + except ObjectDoesNotExist: file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" API_KEY = "49226d3488aac3f5:18d88659c6c1c5e131a0ce0a94d55235" headers = { From 70e2857d8b2ba1fe633007ae1e9e08a5bccd1427 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Tue, 11 Jun 2024 10:53:50 +0500 Subject: [PATCH 24/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 2f86995..f59ad6f 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -43,7 +43,7 @@ class SongViewSet(GenericViewSet): def add_favorite(self, request): data = None try: - song = get_object_or_404(Song, azura_id=request.data.get('azura_id')) + song = Song.objects.get(azura_id=request.data.get('azura_id')) data = { "song": song, "user": request.user From 3af5eb322e829b9e5b5af4a7c9e6f7f2cfe1fd14 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Tue, 11 Jun 2024 10:55:51 +0500 Subject: [PATCH 25/27] =?UTF-8?q?=D0=B5=D1=89=D0=B5=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index f59ad6f..422a494 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -58,7 +58,7 @@ class SongViewSet(GenericViewSet): 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 = self.get_serializer_class(data=data) + serializer = SongSerializer(data=data) if serializer.is_valid(): serializer.save() data = { From 8f94d7c077935e7eff91b17f2f5183878ff6ce0c Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Tue, 11 Jun 2024 10:58:18 +0500 Subject: [PATCH 26/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D1=81=20?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=BE=D0=BC=20=D1=8E=D0=B7=D0=B5=D1=80?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index 422a494..bbff637 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -46,7 +46,7 @@ class SongViewSet(GenericViewSet): song = Song.objects.get(azura_id=request.data.get('azura_id')) data = { "song": song, - "user": request.user + "user": request.user.pk } except ObjectDoesNotExist: file_url = f"http://82.97.242.49:10084/api/station/it-radio/file/{request.data['azura_id']}" @@ -63,7 +63,7 @@ class SongViewSet(GenericViewSet): serializer.save() data = { "song": serializer.data['id'], - "user": request.user + "user": request.user.pk } serializer = FavoriteSongSerializer(data=data) if serializer.is_valid(): From b987783d150c1211ce3394780e063c618a0f33e6 Mon Sep 17 00:00:00 2001 From: Mike0001-droid Date: Tue, 11 Jun 2024 10:59:07 +0500 Subject: [PATCH 27/27] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B0=D0=BA=D1=83=D1=8E=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D1=81=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=81=D0=BD=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/proj/audio/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/proj/audio/views.py b/server/proj/audio/views.py index bbff637..7e275bd 100644 --- a/server/proj/audio/views.py +++ b/server/proj/audio/views.py @@ -45,7 +45,7 @@ class SongViewSet(GenericViewSet): try: song = Song.objects.get(azura_id=request.data.get('azura_id')) data = { - "song": song, + "song": song.pk, "user": request.user.pk } except ObjectDoesNotExist: