movie-night-api/movie_manager/viewsets/movie.py

37 lines
1.2 KiB
Python

from django.http import JsonResponse
from rest_framework import permissions, viewsets
from movie_db.db_providers.omdb import OMDb
from movie_manager.models import Movie
from knox.auth import TokenAuthentication
from movie_manager.serializers import MovieSerializer
class MovieViewset(viewsets.ModelViewSet):
queryset = Movie.objects.all().order_by("title")
authentication_classes = [TokenAuthentication]
permission_classes = [permissions.IsAuthenticated]
serializer_class = MovieSerializer
def update(self, request, pk=None, *args, **kwargs):
omdb = OMDb()
updated_movie = omdb.search(request.data.get("imdb_id"), {"type": "imdb_id"})
movie = Movie.objects.get(pk=pk)
movie.title = updated_movie["title"]
movie.actors = updated_movie["actors"]
movie.year = updated_movie["year"]
movie.critic_scores = updated_movie["critic_scores"]
movie.mpaa_rating = updated_movie["mpaa_rating"]
movie.director = updated_movie["director"]
movie.poster = updated_movie["poster"]
movie.plot = updated_movie["plot"]
movie.genre = updated_movie["genre"]
movie.save()
return JsonResponse(MovieSerializer(movie).data)