openapi definitions for track
This commit is contained in:
@@ -4,13 +4,23 @@ from playlist.models import Track, Profile
|
||||
from playlist.serializers import TrackSerializer
|
||||
from playlist.spotify import spt
|
||||
from playlist.tasks import get_banter, get_and_dither_image
|
||||
from drf_spectacular.utils import extend_schema
|
||||
|
||||
class TrackListView(APIView):
|
||||
@extend_schema(
|
||||
responses={200: TrackSerializer(many=True)},
|
||||
description="Retrieve a list of all tracks."
|
||||
)
|
||||
def get(self, request):
|
||||
tracks = Track.objects.all()
|
||||
serializer = TrackSerializer(tracks, many=True, context={'request': request})
|
||||
return Response(serializer.data)
|
||||
|
||||
@extend_schema(
|
||||
request=None,
|
||||
responses={201: TrackSerializer, 403: {'description': 'Forbidden'}},
|
||||
description="Create a new track from a Spotify link."
|
||||
)
|
||||
def post(self, request):
|
||||
(profile, _) = Profile.objects.get_or_create(user=request.user)
|
||||
(can_nom, reason) = profile.can_nominate
|
||||
@@ -20,6 +30,11 @@ class TrackListView(APIView):
|
||||
serializer = TrackSerializer(track, context={'request': request})
|
||||
return Response(serializer.data)
|
||||
|
||||
@extend_schema(
|
||||
request=None,
|
||||
responses={204: None, 403: {'description': 'Forbidden'}},
|
||||
description="Delete all tracks. Only superusers are allowed."
|
||||
)
|
||||
def delete(self, request):
|
||||
if request.user.is_superuser:
|
||||
Track.objects.all().delete()
|
||||
@@ -28,7 +43,24 @@ class TrackListView(APIView):
|
||||
return Response({'error': 'Only superusers can delete all tracks'}, status=403)
|
||||
|
||||
class TrackDetailView(APIView):
|
||||
@extend_schema(
|
||||
responses={200: TrackSerializer},
|
||||
description="Retrieve a track by its ID."
|
||||
)
|
||||
def get(self, request, id):
|
||||
track = Track.objects.get(pk=id)
|
||||
serializer = TrackSerializer(track, context={'request': request})
|
||||
return Response(serializer.data)
|
||||
|
||||
@extend_schema(
|
||||
request=None,
|
||||
responses={204: None, 403: {'description': 'Forbidden'}},
|
||||
description="Delete a single track by its ID. Only superusers are allowed."
|
||||
)
|
||||
def delete(self, request, id):
|
||||
if request.user.is_superuser:
|
||||
track = Track.objects.get(pk=id)
|
||||
track.delete()
|
||||
return Response(status=204)
|
||||
else:
|
||||
return Response({'error': 'Only superusers can delete tracks'}, status=403)
|
||||
|
||||
Reference in New Issue
Block a user