Add Song Request History functionality to the API.
This commit is contained in:
parent
a94b75a663
commit
068e9e05a8
3 changed files with 21 additions and 10 deletions
|
@ -2,18 +2,13 @@ from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
|
|
||||||
from profiles.models import (RadioProfile, SongRequest)
|
from profiles.models import RadioProfile, SongRequest
|
||||||
|
from .radio import BasicSongRetrieveSerializer
|
||||||
|
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
||||||
class HistorySerializer(ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = SongRequest
|
|
||||||
fields = ('created_date', 'played_at', 'profile', 'song')
|
|
||||||
|
|
||||||
|
|
||||||
class BasicUserSerializer(ModelSerializer):
|
class BasicUserSerializer(ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
@ -36,3 +31,12 @@ class BasicProfileSerializer(ModelSerializer):
|
||||||
|
|
||||||
class FullProfileSerializer(BasicProfileSerializer):
|
class FullProfileSerializer(BasicProfileSerializer):
|
||||||
user = FullUserSerializer()
|
user = FullUserSerializer()
|
||||||
|
|
||||||
|
|
||||||
|
class HistorySerializer(ModelSerializer):
|
||||||
|
profile = BasicProfileSerializer()
|
||||||
|
song = BasicSongRetrieveSerializer()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = SongRequest
|
||||||
|
fields = ('created_date', 'played_at', 'profile', 'song')
|
||||||
|
|
|
@ -3,7 +3,7 @@ from django.urls import path
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
from api.views.controls import JustPlayed, MakeRequest, NextRequest
|
from api.views.controls import JustPlayed, MakeRequest, NextRequest
|
||||||
from api.views.profiles import ProfileViewSet
|
from api.views.profiles import HistoryViewSet, ProfileViewSet
|
||||||
from api.views.radio import (AlbumViewSet, ArtistViewSet,
|
from api.views.radio import (AlbumViewSet, ArtistViewSet,
|
||||||
GameViewSet, SongViewSet)
|
GameViewSet, SongViewSet)
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ class OptionalSlashRouter(DefaultRouter):
|
||||||
|
|
||||||
router = OptionalSlashRouter()
|
router = OptionalSlashRouter()
|
||||||
|
|
||||||
|
router.register(r'history', HistoryViewSet, base_name='history')
|
||||||
router.register(r'profiles', ProfileViewSet, base_name='profile')
|
router.register(r'profiles', ProfileViewSet, base_name='profile')
|
||||||
|
|
||||||
router.register(r'albums', AlbumViewSet, base_name='album')
|
router.register(r'albums', AlbumViewSet, base_name='album')
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from rest_framework import status, viewsets
|
from rest_framework import mixins, status, viewsets
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import IsAdminUser
|
from rest_framework.permissions import AllowAny
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from profiles.models import RadioProfile, Rating, SongRequest
|
from profiles.models import RadioProfile, Rating, SongRequest
|
||||||
|
@ -42,3 +42,9 @@ class ProfileViewSet(viewsets.ModelViewSet):
|
||||||
self.is_owner = False
|
self.is_owner = False
|
||||||
self.check_object_permissions(self.request, obj)
|
self.check_object_permissions(self.request, obj)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
|
class HistoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
|
||||||
|
permission_classes = [AllowAny]
|
||||||
|
queryset = SongRequest.objects.all()
|
||||||
|
serializer_class = HistorySerializer
|
||||||
|
|
Loading…
Reference in a new issue