added support for list management

This commit is contained in:
Edward Tirado Jr 2025-04-07 21:05:05 -05:00
parent 94d8969103
commit a116f5dd63
5 changed files with 56 additions and 10 deletions

View file

@ -2,6 +2,7 @@ from django.http import HttpResponse, JsonResponse
from django.contrib.auth.models import User
from rest_framework import permissions, viewsets
from knox.auth import TokenAuthentication
from rest_framework.decorators import action
from rest_framework.exceptions import NotFound
from movie_manager.models import Movie, MovieList
@ -25,6 +26,12 @@ class MovieListViewset(viewsets.ModelViewSet):
serializer_class = MovieListSerializer
def retrieve(self, request, pk=None, *args, **kwargs):
movie_list = MovieList.objects.get(pk=pk)
return JsonResponse(MovieListSerializer(movie_list).data)
def update(self, request, pk=None, *args, **kwargs):
movie_list = MovieList.objects.get(pk=pk)
movie_list.name = request.data.get('name')
@ -46,3 +53,21 @@ class MovieListViewset(viewsets.ModelViewSet):
movie_list.save()
return JsonResponse(MovieListSerializer(movie_list).data)
@action(detail=True, methods=['put', 'delete'], url_path='movie/(?P<movie_id>[0-9]+)')
def add_movie(self, request, pk=None, movie_id=None, *args, **kwargs):
if request.method == 'DELETE':
return self.remove_movie(request, pk, movie_id)
movie_list = MovieList.objects.get(pk=pk)
movie = Movie.objects.get(pk=movie_id)
movie_list.movies.add(movie)
return JsonResponse(MovieListSerializer(movie_list).data)
def remove_movie(self, request, pk=None, movie_id=None, *args, **kwargs):
movie_list = MovieList.objects.get(pk=pk)
movie = Movie.objects.get(pk=movie_id)
movie_list.movies.remove(movie)
return JsonResponse(MovieListSerializer(movie_list).data)