Skip to content

Instantly share code, notes, and snippets.

@dashdanw
Created February 5, 2019 15:01
Show Gist options
  • Save dashdanw/e588309f1182a5240b39bc8349a449a2 to your computer and use it in GitHub Desktop.
Save dashdanw/e588309f1182a5240b39bc8349a449a2 to your computer and use it in GitHub Desktop.
/tracks/<id>/upload
from rest_framework import viewsets
from rest_framework.status import HTTP_400_BAD_REQUEST
from rest_framework.response import Response
from mixtape.music import serializers
from mixtape.music.models import Track
from mixtape.music.models import Artist
from mixtape.music.models import Album
class TrackViewSet(viewsets.ModelViewSet):
serializer_class = serializers.TrackSerializer
queryset = Track.objects.all()
filterset_fields = ('artist', 'album')
#######################################
# request would look something like #
# this formdata request #
# https://codepen.io/rcass/pen/MmYwEp #
#######################################
@action(detail=True, methods=['patch', 'put'])
def set_password(self, request, pk=None):
track = self.get_object()
try:
track.file = request.data['FILE']
except KeyError as e:
return Response({ 'error', str(e) }, status=HTTP_400_BAD_REQUEST)
track.save()
return Response({'status', 'file upload successful!'}
class ArtistViewSet(viewsets.ModelViewSet):
serializer_class = serializers.ArtistSerializer
queryset = Artist.objects.all()
filterset_fields = ('name',)
class AlbumViewSet(viewsets.ModelViewSet):
serializer_class = serializers.AlbumSerializer
queryset = Album.objects.all()
filterset_fields = ('artist', 'tracks')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment