Beispiel #1
0
 def visit_movie(self, instance):
     try:
         movie_id = self.request.GET.get("id")
         movie = Movie.objects.get(id=movie_id)
         movie.visit_count = movie.visit_count + 1
         movie.save()
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         queryset = Movie.objects.filter(id=movie_id)
         comments = Comment.objects.filter(
             movie_id=self.request.GET.get("id"))
         comSerializer = CommentSerializer(comments, many=True)
         serializer = MovieSerializer(queryset,
                                      context={'user_id': user_id},
                                      many=True)
         comSerializer.data.sort(reverse=True, key=lambda e: e['timestamp'])
         return Response(
             {
                 "data": serializer.data,
                 "comments": comSerializer.data[::-1][:10]
             },
             status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Create movie error ' + e},
                         status=status.HTTP_400_BAD_REQUEST)
Beispiel #2
0
 def like_movie(self, instance):
     try:
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         data = self.request.data
         movie_id = data['movie_id']
         stat = data['status']
         try:
             likeExists = Likes.objects.get(movie_id=movie_id,
                                            user_id=user_id,
                                            status=stat)
             if likeExists:
                 likeExists.delete()
             queryset = Movie.objects.filter(id=movie_id)
             serializer = MovieSerializer(queryset,
                                          context={'user_id': user_id},
                                          many=True)
             return Response(serializer.data, status=status.HTTP_200_OK)
         except Exception:
             pass
         Likes.objects.create(movie_id=movie_id,
                              user_id=user_id,
                              status=stat)
         queryset = Movie.objects.filter(id=movie_id)
         serializer = MovieSerializer(queryset,
                                      context={'user_id': user_id},
                                      many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Like movie error ' + e},
                         status=status.HTTP_400_BAD_REQUEST)
Beispiel #3
0
 def get_movies_by_genre(self, instance):
     try:
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         queryset = Movie.objects.filter(
             genre_id=self.request.GET.get("id"))
         genres = Genre.objects.filter().values()
         serializer = MovieSerializer(queryset,
                                      context={'user_id': user_id},
                                      many=True)
         length = len(list(serializer.data))
         paginator = Paginator(serializer.data, 10)
         page_number = self.request.GET.get("page")
         page_obj = paginator.page(page_number)
         popular = serializer.data
         popular.sort(reverse=True, key=lambda e: e['num_of_likes'])
         return Response(
             {
                 "data": list(page_obj),
                 "length": length,
                 "genres": genres,
                 "popular": popular[:10]
             },
             status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Get movies  error  ' + e},
                         status=status.HTTP_400_BAD_REQUEST)
Beispiel #4
0
    def watch_list_action(self, instance):
        try:
            data = self.request.data
            movie_id = data['movie_id']
            user_id = UserSerializer(self.request.user,
                                     context={
                                         'request': self.request
                                     }).data["id"]

            try:
                dataExists = WatchList.objects.filter(movie_id=movie_id,
                                                      user_id=user_id)
                if dataExists:
                    dataExists.delete()
                    return Response({
                        "data": False,
                        "id": movie_id
                    },
                                    status=status.HTTP_200_OK)
            except Exception:
                pass

            WatchList.objects.create(movie_id=movie_id, user_id=user_id)
            return Response({
                "data": True,
                "id": movie_id
            },
                            status=status.HTTP_200_OK)
        except Exception as e:
            return Response({'error': 'Create genre error ' + e},
                            status=status.HTTP_400_BAD_REQUEST)
Beispiel #5
0
 def get_user_data(self, instance):
     try:
         return Response(UserSerializer(self.request.user,
                                        context={
                                            'request': self.request
                                        }).data,
                         status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Wrong auth token' + e},
                         status=status.HTTP_400_BAD_REQUEST)
class CommentSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False, read_only=True)

    class Meta:
        model = Comment
        fields = (
            'user',
            'content',
            'movie_id',
            'timestamp'
        )
Beispiel #7
0
 def get_watch_list(self, instance):
     try:
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         watch_list = WatchList.objects.filter(user_id=user_id)
         serializer = WatchListSerializer(watch_list,
                                          context={'user_id': user_id},
                                          many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Get movies  error  ' + e},
                         status=status.HTTP_400_BAD_REQUEST)
Beispiel #8
0
 def get_popular(self, instance):
     try:
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         queryset = Movie.objects.all()
         serializer = MovieSerializer(queryset,
                                      context={'user_id': user_id},
                                      many=True)
         lista = serializer.data
         lista.sort(reverse=True, key=lambda e: e['num_of_likes'])
         return Response(lista[:10], status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Get movies  error  ' + e},
                         status=status.HTTP_400_BAD_REQUEST)
Beispiel #9
0
 def create_comment(self, instance):
     try:
         user_id = UserSerializer(self.request.user,
                                  context={
                                      'request': self.request
                                  }).data["id"]
         comment = self.request.data
         content = comment['content']
         movie_id = comment['movie_id']
         timestamp = datetime.datetime.now()
         Comment.objects.create(content=content,
                                movie_id=movie_id,
                                timestamp=timestamp,
                                user_id=user_id)
         comments = Comment.objects.filter(movie_id=movie_id,
                                           user_id=user_id,
                                           timestamp=timestamp,
                                           content=content)
         comSerializer = CommentSerializer(comments, many=True)
         return Response(comSerializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'error': 'Create movie error ' + e},
                         status=status.HTTP_400_BAD_REQUEST)