исправил схемы мелкие правки
This commit is contained in:
parent
f8cc500a23
commit
c12cea204b
|
|
@ -56,7 +56,8 @@ class DeleteSongSchema(AutoSchema):
|
||||||
|
|
||||||
class PlayListSchema(AutoSchema):
|
class PlayListSchema(AutoSchema):
|
||||||
def get_serializer_fields(self, path, method):
|
def get_serializer_fields(self, path, method):
|
||||||
return [
|
if path.endswith('/create_playlist/'):
|
||||||
|
return [
|
||||||
coreapi.Field(
|
coreapi.Field(
|
||||||
name='name',
|
name='name',
|
||||||
location='form',
|
location='form',
|
||||||
|
|
@ -69,6 +70,18 @@ class PlayListSchema(AutoSchema):
|
||||||
required=False,
|
required=False,
|
||||||
schema=coreschema.Integer(description='Обложка плейлиста')
|
schema=coreschema.Integer(description='Обложка плейлиста')
|
||||||
),
|
),
|
||||||
|
]
|
||||||
|
if path.endswith('/update_playlist/') or path.endswith('/delete_song_with_playlist/'):
|
||||||
|
return [
|
||||||
|
coreapi.Field(
|
||||||
|
name='azura_id',
|
||||||
|
location='form',
|
||||||
|
required=False,
|
||||||
|
schema=coreschema.String(description='ID трека с Азуры')
|
||||||
|
),
|
||||||
|
]
|
||||||
|
if path.endswith('/add_to_playlist/'):
|
||||||
|
return [
|
||||||
coreapi.Field(
|
coreapi.Field(
|
||||||
name='azura_id',
|
name='azura_id',
|
||||||
location='form',
|
location='form',
|
||||||
|
|
@ -105,4 +118,7 @@ class PlayListSchema(AutoSchema):
|
||||||
required=False,
|
required=False,
|
||||||
schema=coreschema.String(description='Изображение трека')
|
schema=coreschema.String(description='Изображение трека')
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -8,6 +8,7 @@ class SongSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class PlayListSerializer(serializers.ModelSerializer):
|
class PlayListSerializer(serializers.ModelSerializer):
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
|
|
||||||
if PlayList.objects.filter(
|
if PlayList.objects.filter(
|
||||||
name=attrs.get('name'),
|
name=attrs.get('name'),
|
||||||
user=attrs.get('user')
|
user=attrs.get('user')
|
||||||
|
|
@ -17,6 +18,7 @@ class PlayListSerializer(serializers.ModelSerializer):
|
||||||
'playlist': ['Данный плейлист уже существует']
|
'playlist': ['Данный плейлист уже существует']
|
||||||
})
|
})
|
||||||
return super().validate(attrs)
|
return super().validate(attrs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PlayList
|
model = PlayList
|
||||||
fields = ('id', 'name', 'song', 'user', 'playlist_art')
|
fields = ('id', 'name', 'song', 'user', 'playlist_art')
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ class AzuraCast:
|
||||||
data.append(i)
|
data.append(i)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def add_to_playlist(self, azura_id, data):
|
def add_to_playlist(self, data):
|
||||||
response = self.azura_requests.get_song(azura_id)
|
response = self.azura_requests.get_song(data['azura_id'])
|
||||||
file_play = response.json()['unique_id']
|
file_play = response.json()['unique_id']
|
||||||
data.update(unique_id=file_play)
|
data.update(unique_id=file_play)
|
||||||
return data
|
return data
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,8 @@ class PodkastViewSet(GenericViewSet):
|
||||||
serializer = self.get_serializer(queryset)
|
serializer = self.get_serializer(queryset)
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(
|
return Response({'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
||||||
{'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
status=status.HTTP_404_NOT_FOUND)
|
||||||
status=status.HTTP_404_NOT_FOUND)
|
|
||||||
|
|
||||||
|
|
||||||
class PlayListViewSet(GenericViewSet):
|
class PlayListViewSet(GenericViewSet):
|
||||||
|
|
@ -48,9 +47,8 @@ class PlayListViewSet(GenericViewSet):
|
||||||
serializer = self.get_serializer(queryset)
|
serializer = self.get_serializer(queryset)
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(
|
return Response({'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
||||||
{'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
status=status.HTTP_404_NOT_FOUND)
|
||||||
status=status.HTTP_404_NOT_FOUND)
|
|
||||||
|
|
||||||
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
@action(detail=False, methods=['post'], schema=PlayListSchema())
|
||||||
def create_playlist(self, request):
|
def create_playlist(self, request):
|
||||||
|
|
@ -77,11 +75,12 @@ class PlayListViewSet(GenericViewSet):
|
||||||
def update_playlist(self, request, *args, **kwargs):
|
def update_playlist(self, request, *args, **kwargs):
|
||||||
instance = self.get_object()
|
instance = self.get_object()
|
||||||
serializer = self.get_serializer(data=request.data, partial=True, instance=instance)
|
serializer = self.get_serializer(data=request.data, partial=True, instance=instance)
|
||||||
serializer.is_valid(raise_exception=True)
|
if serializer.is_valid(raise_exception=True):
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
@action(detail=True, methods=['post'])
|
@action(detail=True, methods=['delete'])
|
||||||
def delete_playlist(self, request, *args, **kwargs):
|
def delete_playlist(self, request, *args, **kwargs):
|
||||||
item = self.get_object()
|
item = self.get_object()
|
||||||
item.delete()
|
item.delete()
|
||||||
|
|
@ -95,25 +94,30 @@ class PlayListViewSet(GenericViewSet):
|
||||||
item.song.remove(song)
|
item.song.remove(song)
|
||||||
return Response({'detail': 'Объект удалён'}, status=status.HTTP_200_OK)
|
return Response({'detail': 'Объект удалён'}, status=status.HTTP_200_OK)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(
|
return Response({'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
||||||
{'detail': 'Объекта не существует', 'error': {'PlayList': 'Объекта не существует'}},
|
status=status.HTTP_404_NOT_FOUND)
|
||||||
status=status.HTTP_404_NOT_FOUND)
|
|
||||||
|
|
||||||
@action(detail=True, methods=['post'], schema=PlayListSchema())
|
@action(detail=True, methods=['post'], schema=PlayListSchema())
|
||||||
def add_to_playlist(self, request, *args, **kwargs):
|
def add_to_playlist(self, request, *args, **kwargs):
|
||||||
|
instance = self.get_object()
|
||||||
|
|
||||||
song = None
|
song = None
|
||||||
try:
|
try:
|
||||||
|
|
||||||
song = Song.objects.get(azura_id=request.data.get('azura_id')).pk
|
song = Song.objects.get(azura_id=request.data.get('azura_id')).pk
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
data = self.azura.add_to_playlist(request.data['azura_id'], request.data)
|
data = self.azura.add_to_playlist(request.data)
|
||||||
song_serializer = SongSerializer(data=data)
|
song_serializer = SongSerializer(data=data)
|
||||||
if song_serializer.is_valid():
|
if song_serializer.is_valid():
|
||||||
song_serializer.save()
|
song_serializer.save()
|
||||||
song = song_serializer.data['id']
|
song = song_serializer.data['id']
|
||||||
instance = self.get_object()
|
else:
|
||||||
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
instance.song.add(song)
|
instance.song.add(song)
|
||||||
serializer = self.get_serializer(instance)
|
serializer = self.get_serializer(instance)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class FavoriteSongViewSet(GenericViewSet):
|
class FavoriteSongViewSet(GenericViewSet):
|
||||||
azura = AzuraCast()
|
azura = AzuraCast()
|
||||||
|
|
@ -152,13 +156,15 @@ class FavoriteSongViewSet(GenericViewSet):
|
||||||
serializer = SongSerializer(data=data)
|
serializer = SongSerializer(data=data)
|
||||||
if serializer.is_valid():
|
if serializer.is_valid():
|
||||||
serializer.save()
|
serializer.save()
|
||||||
data = {
|
data = {
|
||||||
"song": serializer.data['id'],
|
"song": serializer.data['id'],
|
||||||
"user": request.user.pk
|
"user": request.user.pk
|
||||||
}
|
}
|
||||||
|
else:
|
||||||
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
serializer = self.get_serializer(data=data)
|
serializer = self.get_serializer(data=data)
|
||||||
if serializer.validate(data):
|
if serializer.is_valid(data):
|
||||||
serializer.save()
|
serializer.save()
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
else:
|
else:
|
||||||
|
|
@ -172,9 +178,8 @@ class FavoriteSongViewSet(GenericViewSet):
|
||||||
queryset.delete()
|
queryset.delete()
|
||||||
return Response(status=status.HTTP_202_ACCEPTED)
|
return Response(status=status.HTTP_202_ACCEPTED)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(
|
return Response({'detail': 'Объекта не существует', 'error': {'Song': 'Объекта не существует'}},
|
||||||
{'detail': 'Объекта не существует', 'error': {'Song': 'Объекта не существует'}},
|
status=status.HTTP_404_NOT_FOUND)
|
||||||
status=status.HTTP_404_NOT_FOUND)
|
|
||||||
|
|
||||||
|
|
||||||
class SongViewSet(GenericViewSet):
|
class SongViewSet(GenericViewSet):
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -142,6 +142,7 @@ REST_FRAMEWORK = {
|
||||||
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
|
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CORS_ALLOW_CREDENTIALS = True
|
||||||
CORS_ALLOWED_ORIGINS = [
|
CORS_ALLOWED_ORIGINS = [
|
||||||
'http://localhost:5173', # Adjust the port if your Vue app is served on a different one
|
'http://localhost:5173', # Adjust the port if your Vue app is served on a different one
|
||||||
'http://127.0.0.1:5173',
|
'http://127.0.0.1:5173',
|
||||||
|
|
@ -154,10 +155,6 @@ SIMPLE_JWT = {
|
||||||
'REFRESH_TOKEN_LIFETIME': timedelta(days=30),
|
'REFRESH_TOKEN_LIFETIME': timedelta(days=30),
|
||||||
}
|
}
|
||||||
|
|
||||||
CORS_ALLOW_CREDENTIALS = True
|
|
||||||
CORS_ALLOWED_ORIGINS = [
|
|
||||||
'http://localhost:5173',
|
|
||||||
]
|
|
||||||
MIN_LEN_PASSWORD = 8
|
MIN_LEN_PASSWORD = 8
|
||||||
|
|
||||||
###AZURACAST CONFIG###
|
###AZURACAST CONFIG###
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue