Skip to content
Snippets Groups Projects
Commit 9e1cd374 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Now include lyrics url in api results

parent b7373650
No related branches found
No related tags found
No related merge requests found
......@@ -9,10 +9,10 @@ import markdown
from django.conf import settings
from django.db import models
from django.contrib.staticfiles.templatetags.staticfiles import static
from django.core.files import File
from django.core.files.base import ContentFile
from django.utils import timezone
from django.core.files import File
from django.core.urlresolvers import reverse
from django.utils import timezone
from taggit.managers import TaggableManager
from versatileimagefield.fields import VersatileImageField
......@@ -309,10 +309,13 @@ class Track(APIModelMixin):
try:
work_data = data['recording']['work-relation-list'][0]['work']
except (IndexError, KeyError):
raise
return
work, _ = Work.get_or_create_from_api(mbid=work_data['id'])
return work
def get_lyrics_url(self):
return reverse('api:tracks-lyrics', kwargs={'pk': self.pk})
class TrackFile(models.Model):
track = models.ForeignKey(Track, related_name='files')
audio_file = models.FileField(upload_to='tracks/%Y/%m/%d')
......
......@@ -50,21 +50,28 @@ class AlbumSerializer(serializers.ModelSerializer):
fields = ('id', 'mbid', 'title', 'cover', 'release_date', 'tags')
class TrackSerializer(serializers.ModelSerializer):
class LyricsMixin(serializers.ModelSerializer):
lyrics = serializers.SerializerMethodField()
def get_lyrics(self, obj):
return obj.get_lyrics_url()
class TrackSerializer(LyricsMixin):
files = TrackFileSerializer(many=True, read_only=True)
tags = TagSerializer(many=True, read_only=True)
class Meta:
model = models.Track
fields = ('id', 'mbid', 'title', 'artist', 'files', 'tags')
fields = ('id', 'mbid', 'title', 'artist', 'files', 'tags', 'lyrics')
class TrackSerializerNested(serializers.ModelSerializer):
class TrackSerializerNested(LyricsMixin):
artist = ArtistSerializer()
files = TrackFileSerializer(many=True, read_only=True)
album = SimpleAlbumSerializer(read_only=True)
tags = TagSerializer(many=True, read_only=True)
class Meta:
model = models.Track
fields = ('id', 'mbid', 'title', 'artist', 'files', 'album', 'tags')
fields = ('id', 'mbid', 'title', 'artist', 'files', 'album', 'tags', 'lyrics')
class AlbumSerializerNested(serializers.ModelSerializer):
tracks = TrackSerializer(many=True, read_only=True)
......
......@@ -106,6 +106,9 @@ class TrackViewSet(TagViewSetMixin, SearchMixin, viewsets.ReadOnlyModelViewSet):
if not work:
work = track.get_work()
if not work:
return Response({'error': 'unavailable work'}, status=404)
lyrics = work.fetch_lyrics()
try:
if not lyrics.content:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment