Example #1
0
    def post(self, request, post_id,  format=None):
        serializer = LikeSerializer(data=request.data)
        try:
            post = Post.objects.get(id=post_id)
        except Post.DoesNotExist:
            return Response(
                {
                    'detail': 'Post does not exists'
                },
                status=status.HTTP_400_BAD_REQUEST
            )

        if serializer.is_valid():
            try:
                _ = Like.objects.get(
                    post__id=post_id,
                    author=self.request.user
                )
                return Response(
                    {
                        'detail': 'Like already exists'
                    },
                    status=status.HTTP_400_BAD_REQUEST
                )
            except Like.DoesNotExist:
                like = serializer.save()
                like.author = self.request.user
                like.post = post
                like.save()
                return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUES)
Example #2
0
    def get(self, request, post_id, **kwargs):
        try:
            post = Post.objects.get(id=post_id)
        except Post.DoesNotExist:
            return Response(
                {
                    'detail': 'Post does not exists'
                },
                status=status.HTTP_400_BAD_REQUEST
            )
        try:
            queryset = Like.objects.get(
                post__id=post_id,
                author=self.request.user
            )
        except Like.DoesNotExist:
            return Response(
                {
                    'detail': 'Like does not exists'
                },
                status=status.HTTP_400_BAD_REQUEST
            )

        like = LikeSerializer(queryset)

        return Response(like.data)
Example #3
0
 def to_representation(self, value):
     if isinstance(value, Follow):
         serializer = FollowSerializer(value)
     elif isinstance(value, Like):
         serializer = LikeSerializer(value)
     else:
         raise Exception("Unexpected content type object")
     return serializer.data
Example #4
0
    def get(self, request):
        date_from = self.request.query_params.get('date_from', None)
        date_to = self.request.query_params.get('date_to', None)
        likes = Like.objects.filter(created_at__range=(date_from, date_to))
        print(date_from)
        print(date_to)

        serializer = LikeSerializer(likes, many=True)
        return Response({"likes": serializer.data})
Example #5
0
 def post(self, request):
     data = request.data
     serializer = LikeSerializer(data=data)
     if serializer.is_valid(raise_exception=True):
         post = get_object_or_404(Post.objects.all(), pk=data['post_id'])
         user = request.user
         try:
             existing_like = Like.objects.get(user=user, post=post)
             existing_like.delete()
             return Response({
                 "success": "Post unliked!"
             })
         except Like.DoesNotExist:
             like = Like()
             like.save(user=user, post=post)
             return Response({
                 "success": "Post liked!"
             })
Example #6
0
 def post(self, request, **kwargs):
     try:
         post = Post.objects.get(id=kwargs['post'])
         like, created = Like.objects.get_or_create(post=post,
                                                    user=request.user)
         serializer = LikeSerializer(like)
         request.user.update_last_action()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     except ObjectDoesNotExist:
         return Response(status=status.HTTP_400_BAD_REQUEST)
Example #7
0
    def post(self, request, format=None):
        try:
            user = self.request.user
            data = self.request.data

            data['liker'] = user.id

            verification = LikeModel.objects.filter(liker=data['liker'], post=data['post'])

            if not verification:
                serializer = LikeSerializer(data=data)
                
                if serializer.is_valid():
                    serializer.save()
                    return Response({'like': serializer.data})
                    
                return Response({'Like': serializer.errors})
            else:
                return Response({'like': 'You already liked this post'})
        except:
            return Response({'error': 'There was an error! please ty again.'})
Example #8
0
    def retrieve(self, request, *args, **kwargs):
        query = self.request.query_params.get('query')
        if query == 'posts':
            author = self.get_object()
            serializer = PostSerializer(author.posts.all(), many=True)
            return Response(serializer.data)
        if query == 'likes':
            like = Like.objects.filter(author=self.get_object())
            serializer = LikeSerializer(like, many=True)
            return Response(serializer.data)

        instance = self.get_object()
        serializer = self.get_serializer(instance)
        return Response(serializer.data)
Example #9
0
 def like(self, request, *args, **kwargs):
     data = {'user': self.request.user.id, 'post': self.get_object().id}
     serializer = LikeSerializer(data=data)
     serializer.is_valid(raise_exception=True)
     serializer.save()
     return Response(serializer.data, status=status.HTTP_201_CREATED)