music.service.backend/rating/views.py

97 lines
3.6 KiB
Python
Executable File

from django.shortcuts import render
from rest_framework import viewsets, mixins
from rest_framework.decorators import action
from rest_framework.response import Response
from drf_yasg.utils import swagger_auto_schema
from django.shortcuts import get_object_or_404
from .models import TrackRating, AlbumRating, UserCommentRating
from .serializers import TrackRatingSerializer, AlbumRatingSerializer, UserCommentRatingSerializer
class TrackRatingViewSet(
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet
):
queryset = TrackRating.objects.all()
serializer_class = TrackRatingSerializer
lookup_url_kwarg = 'user_id'
def list(self, request, *args, **kwargs):
trackID = self.kwargs.get('track_id')
serializer = self.serializer_class.get_default(trackID)
return Response(serializer)
def create(self, request, *args, **kwargs):
trackID = self.kwargs.get('track_id')
checkValidate = self.serializer_class(data = request.data)
if checkValidate and trackID is not None:
serializer = self.serializer_class.create(request.data, track_id=trackID)
return Response(serializer.toDict())
return Response({ "ID": f"{trackID}" })
def destroy(self, request, *args, **kwargs):
trackID = self.kwargs.get('track_id')
userID = self.kwargs.get(self.lookup_url_kwarg)
return Response(self.serializer_class.delete(trackID, userID))
class AlbumRatingViewSet(
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet
):
queryset = AlbumRating.objects.all()
serializer_class = AlbumRatingSerializer
lookup_url_kwarg = 'user_id'
def list(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
serializer = self.serializer_class.get_default(albumID)
return Response(serializer)
def create(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
checkValidate = self.serializer_class(data = request.data)
if checkValidate and albumID is not None:
serializer = self.serializer_class.create(request.data, album_id=albumID)
return Response(serializer.toDict())
return Response({ "ID": f"{albumID}" })
def destroy(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
userID = self.kwargs.get(self.lookup_url_kwarg)
return Response(self.serializer_class.delete(albumID, userID))
class CommentRatingViewSet(
mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet
):
queryset = UserCommentRating.objects.all()
serializer_class = UserCommentRatingSerializer
lookup_url_kwarg = 'user_id'
def list(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
serializer = self.serializer_class.get_default(albumID)
return Response(serializer)
def create(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
checkValidate = self.serializer_class(data = request.data)
if checkValidate and albumID is not None:
serializer = self.serializer_class.create(request.data, album_id=albumID)
return Response(serializer.toDict())
return Response({ "ID": f"{albumID}" })
def destroy(self, request, *args, **kwargs):
albumID = self.kwargs.get('album_id')
userID = self.kwargs.get(self.lookup_url_kwarg)
return Response(self.serializer_class.delete(albumID, userID))