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)
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)
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
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})
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 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)
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.'})
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)
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)