Example #1
0
    def post(self, request, *args, **kwargs):
        """Like/dislike posts and comments"""

        user = self.request.user
        is_dislike = request.GET.get('type', None) == 'dislike'
        post_or_comment_id = self.kwargs['pk']
        is_comment = request.GET.get('comment', False)
        if is_comment:
            # Comment to like
            post_or_comment = Comment.objects.get(pk=post_or_comment_id)
            post_id = post_or_comment.post.pk
        else:
            # Post to like
            post_or_comment = Blog.objects.get(pk=post_or_comment_id)
            post_id = post_or_comment.pk

        like_qs = post_or_comment.likes.filter(author=user)
        if like_qs.exists():
            like_obj = like_qs.first()
            if like_obj.dislike == is_dislike:
                like_obj.delete()
            else:
                like_obj.dislike = is_dislike
                like_obj.save()
        else:
            like_obj = Like(dislike=is_dislike, author=user)
            if is_comment:
                like_obj.comment = post_or_comment
            else:
                like_obj.post = post_or_comment
            like_obj.save()

        return HttpResponseRedirect(
            reverse('blog-detail', kwargs={'pk': post_id}))
Example #2
0
    def get(self, request, **kwargs):
        blog = Blog.objects.get(id=kwargs['blog_pk'])
        is_like = Like.objects.filter(user=request.user).filter(post=blog).count()

        # いいねを解除する
        if is_like > 0:
            liking = Like.objects.get(post__id=kwargs['blog_pk'], user=request.user)
            liking.delete()
            blog.like_num -= 1
            blog.save()

            return JsonResponse({"like": blog.like_num})

        # いいねする
        blog.like_num += 1
        blog.save()
        like = Like()
        like.user = request.user
        like.post = blog
        like.save()

        return JsonResponse({"like": blog.like_num})
Example #3
0
def like(request, *args, **kwargs):
    post = Post.objects.get(id=kwargs['pk'])
    is_like = Like.objects.filter(user=request.user).filter(post=post).count()
    # unlike
    if is_like > 0:
        liking = Like.objects.get(post__id=kwargs['pk'], user=request.user)
        liking.delete()
        post.like_num -= 1
        post.save()
        messages.warning(request, 'いいねを取り消しました')
        return redirect(
            reverse_lazy('blog:post_detail', kwargs={'pk': kwargs['pk']}))
    # like
    post.like_num += 1
    post.save()
    like = Like()
    like.user = request.user
    like.post = post
    like.save()
    messages.success(request, 'いいね!しました')
    return HttpResponseRedirect(
        reverse_lazy('blog:post_detail', kwargs={'pk': kwargs['pk']}))