From c439554e6f1a5850e78671f68c6025fb85f6e5a0 Mon Sep 17 00:00:00 2001 From: Maksym Protsak <112944888+MaksymProtsak@users.noreply.github.com> Date: Thu, 14 Nov 2024 08:57:19 +0200 Subject: [PATCH] Apdated actions for GenreViewSet, ActorViewSet, CinemaHallViewSet, MovieViewSet, OrderViewSet. --- cinema/views.py | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/cinema/views.py b/cinema/views.py index 87546240..2defe91e 100644 --- a/cinema/views.py +++ b/cinema/views.py @@ -1,7 +1,9 @@ from datetime import datetime from django.db.models import F, Count + from rest_framework import viewsets +from rest_framework import mixins from rest_framework.authentication import TokenAuthentication from rest_framework.pagination import PageNumberPagination @@ -31,28 +33,45 @@ from user.permissions import IsAdminOrIfAuthenticatedReadOnly -class GenreViewSet(viewsets.ModelViewSet): +class GenreViewSet( + mixins.ListModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet, +): queryset = Genre.objects.all() serializer_class = GenreSerializer authentication_classes = (TokenAuthentication,) permission_classes = (IsAdminOrIfAuthenticatedReadOnly,) -class ActorViewSet(viewsets.ModelViewSet): +class ActorViewSet( + mixins.ListModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet, +): queryset = Actor.objects.all() serializer_class = ActorSerializer authentication_classes = (TokenAuthentication,) permission_classes = (IsAdminOrIfAuthenticatedReadOnly,) -class CinemaHallViewSet(viewsets.ModelViewSet): +class CinemaHallViewSet( + mixins.ListModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet, +): queryset = CinemaHall.objects.all() serializer_class = CinemaHallSerializer authentication_classes = (TokenAuthentication,) permission_classes = (IsAdminOrIfAuthenticatedReadOnly,) -class MovieViewSet(viewsets.ModelViewSet): +class MovieViewSet( + mixins.CreateModelMixin, + mixins.RetrieveModelMixin, + mixins.ListModelMixin, + viewsets.GenericViewSet, +): queryset = Movie.objects.prefetch_related("genres", "actors") serializer_class = MovieSerializer authentication_classes = (TokenAuthentication,) @@ -138,7 +157,11 @@ class OrderPagination(PageNumberPagination): max_page_size = 100 -class OrderViewSet(viewsets.ModelViewSet): +class OrderViewSet( + mixins.ListModelMixin, + mixins.CreateModelMixin, + viewsets.GenericViewSet, +): queryset = Order.objects.prefetch_related( "tickets__movie_session__movie", "tickets__movie_session__cinema_hall" )