37 lines
1.2 KiB
Python
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)
|