def test_friend_request(self): ReqUuid = uuid.uuid4() RecvUuid = uuid.uuid4() ReqUser = User.objects.create_user("Requester", "*****@*****.**", "testpassword") ReqAuthor = Author(user=ReqUser, uuid=ReqUuid) ReqAuthor.save() RecvUser = User.objects.create_user("Receiver", "*****@*****.**", "testpassword") RecvAuthor = Author(user=RecvUser, uuid=RecvUuid) RecvAuthor.save() friendrequest = FriendRequest(requester=ReqAuthor, receiver=RecvAuthor) friendrequest.save() self.assertEqual(FriendRequest.objects.count(), 1) self.assertEqual(friendrequest.requester.uuid, ReqUuid) self.assertEqual(friendrequest.receiver.uuid, RecvUuid)
def test_friend_request_api(self): ReqUuid = uuid.uuid4() RecvUuid = uuid.uuid4() ReqUser = User.objects.create_user("Requester", "*****@*****.**", "testpassword") ReqAuthor = Author(user=ReqUser, uuid=ReqUuid) ReqAuthor.save() self.client.login(username=ReqUser.username, password="******") RecvUser = User.objects.create_user("Receiver", "*****@*****.**", "testpassword") RecvAuthor = Author(user=RecvUser, uuid=RecvUuid) RecvAuthor.save() friendrequest = FriendRequest(requester=ReqAuthor, receiver=RecvAuthor) friendrequest.save() serializer = FriendRequestSerializer(friendrequest) ApiUrl = reverse("api:friend_request")
def friend_request(request): #current_user = User.objects.get(id=request.user.id) #current_author = Author.objects.get(user=current_user) #try: #author = Author.objects.get(uuid=author_uuid) #except Author.DoesNotExist: #return Response(status=status.HTTP_404_NOT_FOUND) #user = User.objects.get(author=author) #if request.method == 'GET': #requests = FriendRequest.objects.filter(requester=current_author, accepted=False) #serializer = FriendRequestSerializer(requests, many=True) #return Response(serializer.data) if request.method =='POST': if request.is_ajax(): local = False user_uuid = json.loads(request.POST.get('author')) author_uuid = json.loads(request.POST.get('friend')) author_host = json.loads(request.POST.get('host')) if request.POST.get('displayname'): author_name = request.POST.get('displayname') if request.POST.get('displayName'): author_name = request.POST.get('displayName') author_url = request.POST.get('author_url') current_author = Author.objects.get(uuid=user_uuid) if Author.objects.filter(uuid=author_uuid).exists(): friend = Author.objects.get(uuid=author_uuid) local = True if local: if FriendRequest.objects.filter(requester=current_author, receiver=friend).exists(): return HttpResponse("Already added Friend") else: friendRequest = FriendRequest(requester=current_author, receiver=friend) friendRequest.save() serializer = FriendRequestSerializer(friendRequest) return Response(serializer.data, status=status.HTTP_200_OK) else: nodes = Node.objects.all() tempuser = User(username=author_name, password='******') tempauthor = Author(user=tempuser, uuid=author_uuid, host=author_host) friendRequest = FriendRequest(requester=current_author, receiver=tempauthor) serializer = FriendRequestSerializer(friendRequest) if author_host == 'project-c404.rhcloud.com/api': endpoint = '/friendrequest' auth_host_url = 'http://' + author_host else: endpoint = '/api/friendrequest' auth_host_url = 'http://' + author_host + '/api' url = 'http://' + author_host + endpoint for node in nodes: if node.host == auth_host_url: print "URL: ", url headers = {'Content-type': 'application/json'} r = requests.post(url, auth=(node.access_username, node.access_password), json=serializer.data, headers=headers) print "RESPONSE TEXT: ", r.text print "STATUS CODE: ", r.status_code return Response(serializer.data, status=status.HTTP_200_OK) return HttpResponse(status=status.HTTP_403_FORBIDDEN) else: remote_author = request.data.get('author') author_id = request.data.get('author').get('id') friend_id = request.data.get('friend').get('id') local_author = Author.objects.get(uuid=friend_id) if remote_author.get('displayname'): author_name = remote_author.get('displayname') if remote_author.get('displayName'): author_name = remote_author.get('displayName') tempuser = User(username=author_name, password="******") tempuser.save() tempauthor = Author(user=tempuser, uuid=author_id) tempauthor.save() friendRequest = FriendRequest(requester=tempauthor, receiver=local_author) friendRequest.save() serializer = FriendRequestSerializer(friendRequest) return Response(status=status.HTTP_200_OK)
def friend_request(request): #current_user = User.objects.get(id=request.user.id) #current_author = Author.objects.get(user=current_user) #try: #author = Author.objects.get(uuid=author_uuid) #except Author.DoesNotExist: #return Response(status=status.HTTP_404_NOT_FOUND) #user = User.objects.get(author=author) #if request.method == 'GET': #requests = FriendRequest.objects.filter(requester=current_author, accepted=False) #serializer = FriendRequestSerializer(requests, many=True) #return Response(serializer.data) if request.method == 'POST': if request.is_ajax(): local = False user_uuid = json.loads(request.POST.get('author')) author_uuid = json.loads(request.POST.get('friend')) author_host = json.loads(request.POST.get('host')) if request.POST.get('displayname'): author_name = request.POST.get('displayname') if request.POST.get('displayName'): author_name = request.POST.get('displayName') author_url = request.POST.get('author_url') current_author = Author.objects.get(uuid=user_uuid) if Author.objects.filter(uuid=author_uuid).exists(): friend = Author.objects.get(uuid=author_uuid) local = True if local: if FriendRequest.objects.filter(requester=current_author, receiver=friend).exists(): return HttpResponse("Already added Friend") else: friendRequest = FriendRequest(requester=current_author, receiver=friend) friendRequest.save() serializer = FriendRequestSerializer(friendRequest) return Response(serializer.data, status=status.HTTP_200_OK) else: nodes = Node.objects.all() tempuser = User(username=author_name, password='******') tempauthor = Author(user=tempuser, uuid=author_uuid, host=author_host) friendRequest = FriendRequest(requester=current_author, receiver=tempauthor) serializer = FriendRequestSerializer(friendRequest) if author_host == 'project-c404.rhcloud.com/api': endpoint = '/friendrequest' auth_host_url = 'http://' + author_host else: endpoint = '/api/friendrequest' auth_host_url = 'http://' + author_host + '/api' url = 'http://' + author_host + endpoint for node in nodes: if node.host == auth_host_url: print "URL: ", url headers = {'Content-type': 'application/json'} r = requests.post(url, auth=(node.access_username, node.access_password), json=serializer.data, headers=headers) print "RESPONSE TEXT: ", r.text print "STATUS CODE: ", r.status_code return Response(serializer.data, status=status.HTTP_200_OK) return HttpResponse(status=status.HTTP_403_FORBIDDEN) else: remote_author = request.data.get('author') author_id = request.data.get('author').get('id') friend_id = request.data.get('friend').get('id') local_author = Author.objects.get(uuid=friend_id) if remote_author.get('displayname'): author_name = remote_author.get('displayname') if remote_author.get('displayName'): author_name = remote_author.get('displayName') tempuser = User(username=author_name, password="******") tempuser.save() tempauthor = Author(user=tempuser, uuid=author_id) tempauthor.save() friendRequest = FriendRequest(requester=tempauthor, receiver=local_author) friendRequest.save() serializer = FriendRequestSerializer(friendRequest) return Response(status=status.HTTP_200_OK)