diff --git a/api/funkwhale_api/radios/serializers.py b/api/funkwhale_api/radios/serializers.py index 520e98652..2e7e6a409 100644 --- a/api/funkwhale_api/radios/serializers.py +++ b/api/funkwhale_api/radios/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from funkwhale_api.music.serializers import TrackSerializerNested +from funkwhale_api.users.serializers import UserBasicSerializer from . import filters from . import models @@ -15,6 +16,8 @@ class FilterSerializer(serializers.Serializer): class RadioSerializer(serializers.ModelSerializer): + user = UserBasicSerializer(read_only=True) + class Meta: model = models.Radio fields = ( diff --git a/api/funkwhale_api/radios/views.py b/api/funkwhale_api/radios/views.py index 426526442..371ba973e 100644 --- a/api/funkwhale_api/radios/views.py +++ b/api/funkwhale_api/radios/views.py @@ -20,6 +20,7 @@ class RadioViewSet( mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.ListModelMixin, + mixins.DestroyModelMixin, viewsets.GenericViewSet): serializer_class = serializers.RadioSerializer @@ -40,6 +41,17 @@ class RadioViewSet( raise Http404 return serializer.save(user=self.request.user) + @detail_route(methods=['get']) + def tracks(self, request, *args, **kwargs): + radio = self.get_object() + tracks = radio.get_candidates().for_nested_serialization() + serializer = TrackSerializerNested(tracks, many=True) + data = { + 'count': len(tracks), + 'results': serializer.data + } + return Response(data, status=200) + @list_route(methods=['get']) def filters(self, request, *args, **kwargs): serializer = serializers.FilterSerializer( diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue index 9b8786cc6..5fbf0c992 100644 --- a/front/src/components/library/radios/Builder.vue +++ b/front/src/components/library/radios/Builder.vue @@ -180,7 +180,7 @@ export default { let url = 'radios/radios/' axios.post(url, final).then((response) => { self.$router.push({ - name: 'library.radios.edit', + name: 'library.radios.detail', params: { id: response.data.id } diff --git a/front/src/components/radios/Card.vue b/front/src/components/radios/Card.vue index d2c14c37c..17de3c85f 100644 --- a/front/src/components/radios/Card.vue +++ b/front/src/components/radios/Card.vue @@ -1,7 +1,11 @@