97 lines
3.6 KiB
Python
Executable File
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, CommentRating
|
|
from .serializers import TrackRatingSerializer, AlbumRatingSerializer, CommentRatingSerializer
|
|
|
|
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 = CommentRating.objects.all()
|
|
serializer_class = CommentRatingSerializer
|
|
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))
|
|
|