Ejemplo n.º 1
0
    def test_get_followings(self):
        user1 = self.create_user('user1')
        user2 = self.create_user('user2')
        for to_user in [user1, user2, self.alex]:
            self.create_friendship(from_user=self.bob, to_user=to_user)
        user_id_set = FriendshipService.get_following_user_id_set(self.bob.id)
        self.assertEqual(user_id_set, {user1.id, user2.id, self.alex.id})

        FriendshipService.unfollow(self.bob.id, self.alex.id)
        user_id_set = FriendshipService.get_following_user_id_set(self.bob.id)
        self.assertEqual(user_id_set, {user1.id, user2.id})
Ejemplo n.º 2
0
    def test_get_following(self):
        user1 = self.create_user('user1')
        user2 = self.create_user('user2')
        for to_user in [user1, user2, self.ming]:
            self.create_friendship(self.rui, to_user)

        user_id_set = FriendshipService.get_following_user_id_set(self.rui.id)
        self.assertSetEqual(user_id_set, {user1.id, user2.id, self.ming.id})

        FriendshipService.unfollow(self.rui.id, self.ming.id)
        user_id_set = FriendshipService.get_following_user_id_set(self.rui.id)
        self.assertSetEqual(user_id_set, {user1.id, user2.id})
Ejemplo n.º 3
0
    def test_get_followings(self):
        user1 = self.create_user('user1')
        user2 = self.create_user('user2')
        for to_user in [user1, user2, self.dongxie]:
            self.create_friendship(from_user=self.linghu, to_user=to_user)
        FriendshipService.invalidate_following_cache(self.linghu.id)

        user_id_set = FriendshipService.get_following_user_id_set(self.linghu.id)
        self.assertSetEqual(user_id_set, {user1.id, user2.id, self.dongxie.id})

        FriendshipService.unfollow(self.linghu.id, self.dongxie.id)
        FriendshipService.invalidate_following_cache(self.linghu.id)
        user_id_set = FriendshipService.get_following_user_id_set(self.linghu.id)
        self.assertSetEqual(user_id_set, {user1.id, user2.id})
Ejemplo n.º 4
0
    def unfollow(self, request, pk):
        to_user = self.get_object()
        # not support unfollow yourself
        if request.user.id == to_user.id:
            return Response(
                {
                    'success': False,
                    'message': "You cannot unfollow yourself."
                },
                status=status.HTTP_400_BAD_REQUEST)

        # delete the friendship
        delete = FriendshipService.unfollow(
            from_user_id=request.user.id,  # only logged in user can unfollow
            to_user_id=to_user.id,
        )
        # delete as the number of objects deleted
        if not delete:
            return Response('Friendship not exists',
                            status=status.HTTP_400_BAD_REQUEST)

        return Response({
            'success': True,
            'deleted': '{}'.format(delete),
        },
                        status=status.HTTP_200_OK)
Ejemplo n.º 5
0
 def unfollow(self, request, pk):
     # 注意 pk 的类型是 str,所以要做类型转换
     if request.user.id == int(pk):
         return Response(
             {
                 'success': False,
                 'message': 'You cannot unfollow yourself',
             },
             status=status.HTTP_400_BAD_REQUEST)
     deleted = FriendshipService.unfollow(request.user.id, int(pk))
     return Response({'success': True, 'deleted': deleted})
Ejemplo n.º 6
0
    def unfollow(self, request, pk):
        unfollow_user = self.get_object()
        if request.user.id == unfollow_user.id:
            raise ValidationError({'message': 'you cannot unfollow yourself.'})

        deleted = FriendshipService.unfollow(request.user.id, int(pk))
        return Response({
            'success': True,
            'deleted': deleted
        },
                        status=status.HTTP_200_OK)
Ejemplo n.º 7
0
    def unfollow(self, request, pk):
        # 注意 pk 的类型是 str,所以要做类型转换
        # if request.user.id == int(pk):
        unfollow_user = self.get_object()
        if request.user.id == unfollow_user.id:
            return Response({
                'success': False,
                'message': 'You cannot unfollow yourself',
            }, status=status.HTTP_400_BAD_REQUEST)

        deleted = FriendshipService.unfollow(request.user.id, unfollow_user.id)
        return Response({'success': True, 'deleted': deleted}, status=status.HTTP_204_NO_CONTENT)
Ejemplo n.º 8
0
 def unfollow(self, request, pk):
     # raise 404 if no user with id=pk
     unfollow_user = self.get_object()
     # 注意 pk 的类型是 str,所以要做类型转换, or request.user.id == unfolow_user.id
     if request.user.id == int(pk):
         return Response(
             {
                 'success': False,
                 'message': 'You cannot unfollow yourself',
             },
             status=status.HTTP_400_BAD_REQUEST)
     deleted = FriendshipService.unfollow(request.user.id, int(pk))
     return Response({'success': True, 'deleted': deleted})
Ejemplo n.º 9
0
    def unfollow(self, request, pk):
        # raise 404 if no user with id=pk
        unfollow_user = self.get_object()

        # the type of pk is str, so we need to convert it to int
        if request.user.id == int(pk):
            return Response(
                {
                    'success': False,
                    'message': 'You cannot unfollow yourself',
                },
                status=status.HTTP_400_BAD_REQUEST)

        deleted = FriendshipService.unfollow(request.user.id, int(pk))
        return Response({'success': True, 'deleted': deleted})
Ejemplo n.º 10
0
    def unfollow(self, request, pk):
        # check user is exists, raise 404 if no user id == pk  http://172.24.76.93:8000/api/friendships/6/unfollow/
        unfollow_user = self.get_object()
        # self.get_object()
        # 注意 pk 的类型是str, 所以要做类型转换
        if request.user.id == unfollow_user.id:
            return Response(
                {
                    'success': False,
                    'message': 'You cannot unfollow yourself',
                },
                status=status.HTTP_400_BAD_REQUEST)
        deleted = FriendshipService.unfollow(request.user.id, int(pk))

        return Response({'success': True, 'deleted': deleted})
Ejemplo n.º 11
0
 def unfollow(self, request, pk):
     # raise 404 if there is no user whose user_id = pk
     unfollow_user = self.get_object()
     if request.user.id == unfollow_user.id:
         return Response(
             {
                 'success': False,
                 'message': 'You cannot unfollow yourself'
             },
             status=status.HTTP_400_BAD_REQUEST)
     deleted = FriendshipService.unfollow(request.user.id, unfollow_user.id)
     return Response(
         {
             'success': True,
             'deleted': deleted
         },
         status=status.HTTP_204_NO_CONTENT,
     )
Ejemplo n.º 12
0
 def unfollow(self, request, pk):
     unfollow_user = self.get_object()
     # pk type is str, need to convert type
     #if request.user.id == int(pk):
     # raise 404 if no user with id=pk
     if request.user.id == unfollow_user.id:
         return Response({
             'success': False,
             'message': 'You cannot unfollow yourself',
         }, status=status.HTTP_400_BAD_REQUEST)
     # return 2 values, 1st how many ele deleted totally
     # 2nd how many deleted each type
     #deleted, _ = Friendship.objects.filter(
     #    from_user=request.user,
     #    to_user=unfollow_user,
     #).delete()
     #FriendshipService.invalidate_following_cache(request.user.id)
     deleted = FriendshipService.unfollow(request.user.id, int(pk))
     return Response({
         'success': True,
         'deleted': deleted
     })