def post(self,request): data = json.loads(request.body) try: if data['post_id']: if Post.objects.filter(id=data['post_id']).exists(): user_id = request.user.id if Like.objects.filter(post_id=data['post_id'],user_id=user_id).exists(): target_post = Post.objects.get(id=data['post_id']) target_post.likes -= 1 target_post.save() like_obj = Like.objects.filter(post_id=data['post_id'],user_id=request.user.id) like_obj.delete() return JsonResponse({'message':f"Unlike post id:{data['post_id']}"}, status=200) target_post = Post.objects.get(id=data['post_id']) target_post.likes += 1 target_post.save() like_obj = Like(post_id=data['post_id'],user_id=request.user.id) like_obj.save() return JsonResponse({'message':f"Like post id:{data['post_id']}"}, status=200) return JsonResponse({'message':'INVALID_Post_id'}, status=401) except KeyError: return JsonResponse({'message': 'KEY_ERROR'}, status=400)
def like(request): user = User.objects.get(username=request.POST['user']) post = Post.objects.get(pk=request.POST['post']) like = Like(user=user, profile=user.profile, post=post) like.save() post.likes = post.likes + 1 post.save() return JsonResponse({'message': 'ok'})
def set_like(*, like: Like, kind: Union[bool, None]): """ Set Kind Like if is not equal old value else delete like instance User click like first time - post like User click second time - like will remove """ if kind is not None: if like.kind != kind: like.kind = kind like.save() return like.delete()
def setUp(self): """Setup database with post with likes.""" user = User(password='******', username='******', email='*****@*****.**') user.save() post = Post(body='The body of a post.', user=user) post.save() like = Like(post=post, user=user) like.save() dislike = Dislike(post=post, user=user) dislike.save()
def like_post_view(request, id_post): from posts.models import Post, Like profile = request.user.profile post = Post.objects.filter(pk=id_post) if post.count() == 0: return redirect('/posts/%i/' % id_post) post = post[0] if Like.objects.filter(post=post, user=profile).count() != 0: likes = Like.objects.filter(post=post, user=profile) likes.delete() return redirect('/posts/%i/' % id_post) new_like = Like(user=profile, post=post) new_like.save() return redirect('/posts/%i/' % id_post)
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!" })
def like(self, request, *args, **kwargs): post = self.get_object() try: Like.objects.get(post_id=post.id, user_id=request.user.id) return Response( { 'message': 'User {} already liked the post {}'.format( request.user.id, post.id) }, status=HTTP_400_BAD_REQUEST) except ObjectDoesNotExist: like = Like(post_id=post.id, user_id=request.user.id, date=timezone.now()) like.save() return Response({ 'message': 'Post {} was liked by user {}'.format(post.id, request.user.id) })
def get(self, request, postId): post = Post.objects.get(id=postId) like = Like.objects.filter(author=self.request.user, post=post) like_list = {} comment_list = {} likes_total = {} #added if like.exists(): like.delete() else: like = Like(author=self.request.user, post=post) like.save() like_list[post.id] = Like.objects.filter(post=post) comment_list[post.id] = Comment.objects.filter(post=post) likes_total[post.id] = len(Like.objects.filter(post=post)) #added return render( request, 'posts/like.html', { 'like_list': like_list, 'comment_list': comment_list, 'likes_total': likes_total, #added 'post': post })
def _generate_post_likes(self): users = User.objects.all()[:10] for user in users: print(f"Creating likes by {user.first_name} {user.last_name}", end="\r") n_iteration = random.randint(self._min_number_likes_per_post, self._number_likes_per_post) for i in range(n_iteration): like = Like() like.user = user like.post = Post.objects.order_by('?').first() like.save()