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})
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})
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})
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)
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})
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)
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)
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})
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})
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})
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, )
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 })