123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- from furl import furl
- from rest_framework import serializers
- from rest_framework.reverse import reverse as drf_reverse
- from .fields import UUIDHyperlinkedIdentityField
- from .models import Album, Artist, Track,Playlist,PlaylistTrack
- class TrackAlbumArtistSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="artist-detail")
- class Meta:
- model = Artist
- fields = ("uuid", "url", "name")
- class TrackAlbumSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="album-detail")
- artist = TrackAlbumArtistSerializer()
- class Meta:
- model = Album
- fields = ("uuid", "url", "name", "artist")
- class TrackSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="track-detail")
- album = TrackAlbumSerializer()
- class Meta:
- model = Track
- fields = ("uuid", "url", "name", "number", "album")
- class PlaylistSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="playlist-detail")
- class Meta:
- model = Playlist
- fields = ("uuid", "name","url",)
- class AlbumTrackSerializer(TrackSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="track-detail")
- class Meta:
- model = Track
- fields = ("uuid", "url", "name", "number")
- class AlbumArtistSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="artist-detail")
- class Meta:
- model = Artist
- fields = ("uuid", "url", "name")
- class AlbumSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="album-detail")
- artist = AlbumArtistSerializer()
- tracks = AlbumTrackSerializer(many=True)
- class Meta:
- model = Album
- fields = ("uuid", "url", "name", "year", "artist", "tracks")
- class ArtistSerializer(serializers.ModelSerializer):
- uuid = serializers.ReadOnlyField()
- url = UUIDHyperlinkedIdentityField(view_name="artist-detail")
- albums_url = serializers.SerializerMethodField()
- class Meta:
- model = Artist
- fields = ("uuid", "url", "name", "albums_url")
- def get_albums_url(self, artist):
- path = drf_reverse("album-list", request=self.context["request"])
- return furl(path).set({"artist_uuid": artist.uuid}).url
- class UpdatePlaylistSerializer(serializers.ModelSerializer):
- '''
- serializer to update Tacks
- '''
- def __init__(self, *args, **kwargs):
- super(UpdatePlaylistSerializer, self).__init__(*args, **kwargs)
- context = kwargs.get('context', None)
- if context:
- self.request = kwargs['context']['request']
- class Meta(object):
- '''
- meta for user
- '''
- fields = "__all__"
- model = Playlist
-
- def update(self, *args, **kwargs):
- self.instance.name = self.request.data['name']
- self.instance.save()
- return self.instance
-
- def to_representation(self, *args, **kwargs):
- _ = self
- return {
- 'details': "PLAYLIST UPDATED SUCCESSFULLY"
- }
- class PlaylistCreateSerializer(serializers.ModelSerializer):
- '''
- Serializer to create tracks
- '''
- def __init__(self, *args, **kwargs):
- super(PlaylistCreateSerializer, self).__init__(*args, **kwargs)
- context = kwargs.get('context', None)
- if context:
- self.request = kwargs['context']['request']
- class Meta(object):
- '''
- meta for creating Playlist
- '''
- fields = ('uuid', 'name',)
- model = Playlist
-
- def create(self, validated_data):
- instance = super(PlaylistCreateSerializer, self).create(validated_data)
- return instance
-
- def to_representation(self, *args, **kwargs):
- _ = self
- return {
- 'details': "PLAYLIST SUCCESSFULLY CREATED"
- }
|