Пример #1
0
async def update_p2p_online(obj):
    global objs
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    friends = mydb["friends"]
    users = mydb["users"]

    user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": user_name})["_id"])

    friend = []

    q1 = {"friend_id": my_id, "status": 1}

    for i in friends.find(q1):
        friend.append(
            users.find_one({"_id": object_id(i["user_id"])})["u_name"])

    q2 = {"user_id": my_id, "status": 1}
    for i in friends.find(q2):
        friend.append(
            users.find_one({"_id": object_id(i["friend_id"])})["u_name"])

    q = {"username": {"$in": friend}}
    select = {"websocket": 1, "username": 1}
    for u in websocket.find(q, select):
        #print("sending_online status to ",u["websocket"])

        data = {"type": "p2p_online", "username": user_name}
        try:
            await objs[u["websocket"]].send(json.dumps(data))
        except:
            pass
Пример #2
0
async def rules(obj):
    global objs
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    friends = mydb["friends"]
    users = mydb["users"]
    rules = mydb["rules"]
    user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": user_name})["_id"])

    q = {"user_id": my_id}
    rull = []
    for i in rules.find(q):
        i["_id"] = str(i["_id"])
        rull.append(i)
    print("#rules ", rull)

    friend = []

    #ind({"$or":[{"sender_id":my_id,"receiver_id"

    q1 = {
        "$or": [{
            "friend_id": my_id,
            "status": 1
        }, {
            "friend_id": my_id,
            "status": 2
        }]
    }
    for i in friends.find(q1):
        #check is that friend block by me
        if (friends.find_one({
                "user_id": my_id,
                "status": 2,
                "friend_id": i["user_id"]
        }) != None):
            continue
        friend.append(
            users.find_one({"_id": object_id(i["user_id"])})["u_name"])

    q2 = {"user_id": my_id, "status": 1}
    for i in friends.find(q2):

        uname = users.find_one({"_id": object_id(i["friend_id"])})["u_name"]
        if (uname not in friend):
            friend.append(uname)

    data = {"type": "rules", "rules": rull, "friends": friend}
    data = json.dumps(data)
    await obj.send(data)
Пример #3
0
async def p2p(obj):
    global objs
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    friends = mydb["friends"]
    users = mydb["users"]
    user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": user_name})["_id"])

    friend = []

    #ind({"$or":[{"sender_id":my_id,"receiver_id"

    q1 = {
        "$or": [{
            "friend_id": my_id,
            "status": 1
        }, {
            "friend_id": my_id,
            "status": 2
        }]
    }
    print("#0q ", q1)
    for i in friends.find(q1):
        print("#0 ", i)
        #check is that friend block by me
        if (friends.find_one({
                "user_id": my_id,
                "status": 2,
                "friend_id": i["user_id"]
        }) != None):
            continue
        friend.append(
            users.find_one({"_id": object_id(i["user_id"])})["u_name"])

    q2 = {"user_id": my_id, "status": 1}
    for i in friends.find(q2):
        print("#2 ", i)

        uname = users.find_one({"_id": object_id(i["friend_id"])})["u_name"]
        if (uname not in friend):
            friend.append()

    q = {"username": {"$in": friend}}
    select = {"username": 1}
    onlines = []
    for u in websocket.find(q, select):
        onlines.append(u["username"])
    data = {"type": "p2p_users_meta", "friends": friend, "onlines": onlines}
    data = json.dumps(data)
    await obj.send(data)
def friend_suggestions(request):

	my_id=is_valid_request(request)

	if(my_id==0):
		data={}
		data["_id"]=-1
		data=json.dumps(data)
		return HttpResponse(data, content_type='application/json')   

	myclient = pymongo.MongoClient('mongodb://localhost:27017/')
	mydb = myclient['social_network']
	users=mydb["users"]
	session = mydb["session"]
	friends=mydb["friends"]

	
		



	#friend made by me
	Friends=[]

	Friends.append(object_id(my_id))


	q2={"user_id":my_id} #from m
	q3={"_id":1,"u_name":1,"f_name":1,"l_name":1,"pic_url":1}

	select={"_id":1,"friend_id":1}
	
	for i in friends.find(q2,select):
		Friends.append(object_id(i["friend_id"]))


	#friend made  me a friend	
	q1={"friend_id":my_id} #from m
	select={"_id":1,"user_id":1}
	for i in friends.find(q1,select):
		Friends.append(object_id(i["user_id"]))
	
	data=[]
	#people who block me add in feature dont show them in result who block me so i cant see them 
	for i in users.find({"_id":{"$nin":Friends}},{"pass_d":0}):
		i["_id"]=str(i["_id"])
		data.append(i)
	return HttpResponse(json.dumps(data), content_type="application/json")
Пример #5
0
async def add_rule(obj, data):
    # {"type":"add_rule","rule_name":"rule","for_":"null","rule_type":"4","rule":".*gm$"}

    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    rules = mydb["rules"]
    users = mydb["users"]

    my_user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": my_user_name}, {"_id": 1})["_id"])

    #my id is object id of rule definer and for is username of rule define for
    q = {
        "user_id": my_id,
        "rule_name": data["rule_name"],
        "for_": data["for_"],
        "rule_type": data["rule_type"],
        "rule": data["rule"]
    }

    if (data["id"] != ""):
        rules.update_one({"_id": object_id(data["id"])}, {"$set": q})
    else:
        rules.insert(q)
Пример #6
0
def menu(request):
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    users=mydb["users"]
    session = mydb["session"]
    post=mydb["post"]


    data={}
    if request.method == "POST":
        data={}
        data["username"]=request.POST.get('username')
        data["_id"]=object_id(request.POST.get('_id'))
        if(session.find_one(data)!=None):
            data=users.find_one({"u_name":data["username"]},{"pass_d":0})
            data["_id"]=str(data["_id"])
        else:
            data={}
            data["_id"]=-1
            data=json.dumps(data)
            return HttpResponse(data, content_type='application/json')    
    else:
        data={}
        data["_id"]=-1
        data=json.dumps(data)
        return HttpResponse(data, content_type='application/json')            

    #data contain user details name pic_url
    return render(request, 'menu.html', {"data" : data})
Пример #7
0
def profile(request):

    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    users = mydb["users"]
    session = mydb["session"]
    post = mydb["post"]
    mydb2 = myclient['webhost']
    my_ipv6 = mydb2["my_ipv6"]

    data = {}

    #in future add current age of that user

    #select no of posts
    user_id = request.GET.get("id")
    data = users.find_one({"_id": object_id(user_id)}, {"pass_d": 0})
    data["_id"] = str(data["_id"])

    q = {"user_id": user_id}
    data['post_count'] = post.count_documents(q)

    #select no of comments
    comments = mydb["comments"]
    q = {"user_id": user_id}

    data['comments_count'] = comments.count_documents(q)

    #select no of likes
    likes = mydb["like_dislike"]
    data['like_count'] = likes.count_documents(q)

    #select no of likes to this users post

    #1. get user post ids

    post_ids = []
    for i in post.find(q, {"id": 1}):
        post_ids.append(str(i["_id"]))
    q = {}
    data['own_like_count'] = likes.count_documents({
        "post_id": {
            "$in": post_ids
        },
        "action": 1
    })

    #select no of comments to this users post
    data['own_comment_count'] = comments.count_documents(
        {"post_id": {
            "$in": post_ids
        }})

    #data=json.dumps(data)
    #return HttpResponse(data, content_type='application/json')
    return render(request, 'account.html', {"data": data})
Пример #8
0
def logout(request):
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    users = mydb["users"]
    session = mydb["session"]

    if (request.method == "POST"):
        query = {}
        query["username"] = request.POST.get("username")
        query["_id"] = object_id(request.POST.get("_id"))
        session.remove(query)  #delete session
        return render(request, 'index.html', {"username": 0})
    #websocket=mydb["websocket"]    removed websocket entry by websocket connection

    query = {
        "username":
        users.find_one({"_id": object_id(request.session['u_id'])})["u_name"]
    }
    session.remove(query)  #delete session
    #websocket.remove(query)#clear from websocket objects
    request.session['u_id'] = 0  #reset session variable
    return render(request, 'index.html', {"username": 0})
Пример #9
0
async def delete_rule(obj, data):
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    rules = mydb["rules"]
    users = mydb["users"]

    my_user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": my_user_name}, {"_id": 1})["_id"])

    #my id is object id of rule definer and for is username of rule define for
    q = {"_id": object_id(data["rule_id"]), "user_id": my_id}

    rules.remove(q)
def is_valid_request(request):
	myclient = pymongo.MongoClient('mongodb://localhost:27017/')
	mydb = myclient['social_network']
	users=mydb["users"]
	session = mydb["session"]

	
	if request.method == "POST":
		data={}
		data["username"]=request.POST.get('username')
		data["_id"]=object_id(request.POST.get('_id'))
		if(session.find_one(data)!=None):
			#found old session ok
			my_id=str(users.find_one({"u_name":data["username"]})["_id"])
			return my_id
		else:
			return 0			
	else:
		return 0
Пример #11
0
async def blocked(obj, data):
    global objs
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    websocket = mydb["websocket"]
    friends = mydb["friends"]
    users = mydb["users"]
    user_name = websocket.find_one({"websocket": str(obj)})["username"]
    my_id = str(users.find_one({"u_name": user_name})["_id"])

    friend = []

    q2 = {"user_id": my_id, "status": 2}
    for i in friends.find(q2):
        friend.append(
            users.find_one({"_id": object_id(i["friend_id"])})["u_name"])

    data = {"type": "blocked", "blocked": friend}
    data = json.dumps(data)
    await obj.send(data)
Пример #12
0
def register(obj, data):
    global objs
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    mycol = mydb["session"]
    websocket = mydb["websocket"]
    if (websocket.find_one({"websocket": str(obj)}) == None):
        #user does not have another active session
        q = {"_id": object_id(data['key']), "username": data['user']}
        if (mycol.find(q)):
            #user has active entry in session valid
            objs[str(obj)] = obj
            websocket.insert({
                "key": data["key"],
                "username": data["user"],
                "websocket": str(obj)
            })
            print("\n", websocket.find().count(), " users online ")
            print("\n", len(objs), " users online as per objs")
        else:
            print("not valid session found")
    else:
        print("user_allready active session: ")
def my_friends(request):
	#mongodb update success
	#load friend who are friend or requested me or requested by or blocked by me

	myclient = pymongo.MongoClient('mongodb://localhost:27017/')
	mydb = myclient['social_network']
	users=mydb["users"]
	session = mydb["session"]
	friends=mydb["friends"]
	mydb2 = myclient['webhost']
	my_ipv6=mydb2["my_ipv6"]
	
	if request.method == "POST":
		data={}
		data["username"]=request.POST.get('username')
		data["_id"]=object_id(request.POST.get('_id'))
		if(session.find_one(data)!=None):
			#found old session ok
			my_id=str(users.find_one({"u_name":data["username"]})["_id"])
		else:
			return HttpResponse(json.dumps({"request user has no active session":"invalid request"}), content_type="application/json")			
	else:
		return HttpResponse(json.dumps({"request type post needed":"found_get"}), content_type="application/json")		
	data=[]


	#friend made by me
	print("my id: ",my_id)
	q2={"user_id":my_id} #from m
	q3={"_id":1,"u_name":1,"f_name":1,"l_name":1,"pic_url":1}

	select={"_id":1,"friend_id":1,"status":1}
	
	for i in friends.find(q2,select):
		try:
			status=i["status"]
			if(status==0):
				status=0;#requested by me
			if(status==1):
				status=1;#accepted by me allready "friends"
			if(status==2):
				#second useer block me so i cant see him ""
				status=2

			user=users.find_one({"_id":object_id(i["friend_id"])},q3)


			user["friend_id"]=str(i["friend_id"])
			user["status"]=i["status"]
			user["_id"]=str(user["_id"])
			data.append(user)
		except:
			pass
	#friend made  me a friend	
	q1={"friend_id":my_id} #from m
	select={"_id":1,"user_id":1,"status":1}
	for i in friends.find(q1,select):
		try:
			status=i["status"]
			if(status==0):
				status=3;#requested by me not accepted yet by him "requested"
			if(status==1):
				status=1;#accepted by me"
			if(status==2):
				status=2#i block by him
				continue
			i["_id"]=str(i["_id"])	
			i["status"]=status

			user=users.find_one({"_id":object_id(i["user_id"])},q3)
			user["friend_id"]=str(i["user_id"])
			user["status"]=i["status"]
			user["_id"]=str(user["_id"])
			data.append(user)
		except:
			pass	
	return HttpResponse(json.dumps(data), content_type="application/json")
Пример #14
0
def main(request):
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['social_network']
    users = mydb["users"]
    session = mydb["session"]

    mydb2 = myclient['webhost']
    my_ipv6 = mydb2["my_ipv6"]

    if request.method == "POST":
        data = {}
        data["username"] = request.POST.get('username')
        data["_id"] = object_id(request.POST.get('_id'))
        if (session.find_one(data) != None):
            #found old session ok
            #data["username"]=username
            data["_id"] = str(data["_id"])
            ipv6 = '[' + my_ipv6.find().limit(1).sort("_id",
                                                      -1)[0]["ipv6"] + ']'
            data["websocket_ip"] = ipv6
            data["pic_url"] = users.find_one({"u_name":
                                              data["username"]})["pic_url"]
            data = json.dumps(data)
            return HttpResponse(data, content_type='application/json')
        else:
            #not found old session
            #user is not login
            data = {}
            data["_id"] = -1
            data = json.dumps(data)
            return HttpResponse(data, content_type='application/json')

    data = {}
    if (not is_login(request)):  #is user not login
        #user is not login
        data["_id"] = -1
        data = json.dumps(data)
        return HttpResponse(data, content_type='application/json')
    #user is loogin

    my_id = request.session[
        'u_id']  #object_id_of_mongo collection users if user is login

    username = users.find_one({"_id": object_id(my_id)})["u_name"]
    #return HttpResponse(username, content_type='application/json')
    #get inserted quey data in session to use for chatting and current session

    data = session.find_one({"username": username})
    if (data == None):
        data = {}
        #use has no active session
        data["_id"] = -1
        data = json.dumps(data)
        return HttpResponse(data, content_type='application/json')

    data["username"] = username
    data["_id"] = str(data["_id"])
    ipv6 = '[' + my_ipv6.find().limit(1).sort("_id", -1)[0]["ipv6"] + ']'
    data["websocket_ip"] = ipv6
    data = json.dumps(data)
    return HttpResponse(data, content_type='application/json')