예제 #1
0
파일: likes.py 프로젝트: ibohonos/matcha
def ajax_like():
	id_user = session.get('id_user_logged')
	id_post = request.form.get('post_id')

	if id_user:
		if liked(id_user, id_post):
			res = unlike(id_user, id_post)
			if not res:
				user_post = get_post_by_id(id_post)
				if not user_post['id_user_from'] == id_user:
					msg = "User: "******" " + \
						session.get('user_data')['last_name'] + " unlike your post"
					add_notification(user_post['id_user_from'], msg)
					user = get_user_by_id(user_post['id_user_from'])
					rating = user['rating'] - 5
					update_rating(rating, user_post['id_user_from'])
				return "unliked"
		else:
			res = like(id_user, id_post)
			if not res:
				user_post = get_post_by_id(id_post)
				if not user_post['id_user_from'] == id_user:
					msg = "User: "******" " + \
						session.get('user_data')['last_name'] + " like your post"
					add_notification(user_post['id_user_from'], msg)
					user = get_user_by_id(user_post['id_user_from'])
					rating = user['rating'] + 5
					update_rating(rating, user_post['id_user_from'])
				return "liked"
	return "Fail"
예제 #2
0
def about(id_user=None):
    if not session.get('user_data') and not id_user:
        return redirect('/')
    if id_user:
        user = get_user_by_id(id_user)
        about = get_about(id_user)
    else:
        user = session.get('user_data')
        about = get_about(session.get('id_user_logged'))
    if session.get('id_user_logged'
                   ) and not user['id_user'] == session.get('id_user_logged'):
        msg = "User: "******" " + \
         session.get('user_data')['last_name'] + " view your profile"
        add_notification(user['id_user'], msg)

    location = get_location_by_id(id_user)
    tags = get_tags_by_id_user(id_user)
    data = {
        'user': user,
        'about': about,
        'all_friends': all_friends(user['id_user']),
        'location': location,
        'tags': tags
    }
    return render_template("timeline-about.html", data=data)
예제 #3
0
def ajax_add_comment():
    id_photo = request.form['id_photo']
    id_user = session.get('id')
    text = html.escape(request.form['text'])

    if not id_photo or not id_user or not text:
        return json.dumps({
            'ok': False,
            'error': "Something went wrong"
        })
    res = comments.add_comment(id_photo, id_user, text)
    to_whom_id = user_model.get_user_id_by_photo_id(id_photo)
    if to_whom_id != session.get('id'):
        msg = 'You have a new comment from ' + str(session.get('firstname')) + ' ' + str(session.get('lastname')) + '.'
        image = user_model.get_avatar(session.get('id'))
        notifications_view.add_notification(session.get('id'), to_whom_id, msg, 'comment', image)
    rating = user_model.get_user_fame_rating(to_whom_id) + 5
    user_model.update_user_rating(rating, to_whom_id)
    if not res:
        return json.dumps({
            'ok': False,
            'error': "The comment has not been added"
        })
    return json.dumps({
        'ok': True,
        'error': "Commented",
        'id_comment': res,
        'text': text
    })
예제 #4
0
파일: posts.py 프로젝트: ibohonos/matcha
def ajax_create_post():
    content = html.escape(request.form.get('content').strip())
    auth_id = session.get('id_user_logged')
    user_id = request.form.get('user_id')

    if content:
        user = get_user_by_id(auth_id)
        if user and user['active']:
            res = create_post(user_id, auth_id, "text", "public", content,
                              None, None)
            if res:
                user_first_name = user['first_name']
                user_last_name = user['last_name']
                user_avatar = user['avatar']
                post = get_post_by_id(res)
                if post:
                    if not post['id_user'] == auth_id:
                        msg = "User: "******" " + user_last_name + " send you post"
                        add_notification(user_id, msg)
                        user2 = get_user_by_id(user_id)
                        rating = user2['rating'] + 10
                        update_rating(rating, user_id)
                    data = {
                        'user_avatar': user_avatar,
                        'user_first_name': user_first_name,
                        'user_last_name': user_last_name,
                        'auth_id': auth_id,
                        'type': "text",
                        'content': content,
                        'id_post': res,
                        'date_creation': post['date_creation'].split(" ")[0],
                        'time_creation': post['date_creation'].split(" ")[1]
                    }
                    return jsonify(data)
    return "Fail"
예제 #5
0
def profile(id_user=None):
    if not session.get('user_data') and not id_user:
        return redirect('/')
    if id_user:
        user = get_user_by_id(id_user)
        posts = all_user_post(id_user)
    else:
        user = session.get('user_data')
        posts = all_user_post(session.get('id_user_logged'))
    if session.get('user_data'):
        user_cur = session.get('user_data')
    else:
        user_cur = None

    if session.get('id_user_logged'
                   ) and not user['id_user'] == session.get('id_user_logged'):
        msg = "User: "******" " + \
         session.get('user_data')['last_name'] + " view your profile"
        add_notification(user['id_user'], msg)
    data = {
        'user': user,
        'user_cur': user_cur,
        'posts': posts,
        'get_user_by_id': get_user_by_id,
        'all_post_comments': all_post_comments,
        'len_post_likes': len_post_likes,
        'len_post_dislikes': len_post_dislikes,
        'liked': liked,
        'disliked': disliked,
        'all_friends': all_friends(user['id_user'])
    }
    return render_template('timeline.html', data=data)
예제 #6
0
def ajax_delete_friend():
    user_id = request.args.get('user_id')
    if sympathys.check_sympathy(session.get('id'), user_id):
        if sympathys.check_request(session.get('id'), user_id) == 'sender':
            sympathys.remove_request(session.get('id'), user_id)
            status = 'sender'
        else:
            status = 'taker'
            sympathys.set_request_status_to_zero(session.get('id'), user_id)
        if not sympathys.unlike_user(session.get('id'), user_id):
            msg = str(session.get('firstname')) + ' ' + str(
                session.get('lastname')) + ' does not like you anymore.'
            image = user_model.get_avatar(session.get('id'))
            notification_view.add_notification(session.get('id'), user_id, msg,
                                               'unlike_user', image)
            rating = user_model.get_user_fame_rating(user_id) - 20
            user_model.update_user_rating(rating, user_id)
            return json.dumps({
                'ok': True,
                'error': "Unlike",
                'status': status
            })
        else:
            return json.dumps({'ok': False, 'error': "Something went wrong"})
    else:
        return json.dumps({'ok': False, 'error': "Something went wrong"})
예제 #7
0
파일: chat.py 프로젝트: ibohonos/matcha
def message(data):
	room = chat_users_sid_to_room[request.sid]
	user_data = get_user_by_id(data['user_id'])
	data['user_data'] = user_data
	data['date_time'] = "{:%Y-%m-%d %H:%M:%S}".format(datetime.now())
	data['message'] = html.escape(data['message'])
	room_data = get_chat_room_by_name(room)
	user_to_online = check_user_online(data['user_to_id'])
	save_message(room_data[0]['id_chat_room'], data['user_id'], data['user_to_id'], data['message'], user_to_online)
	emit('message_from_server', data, room=room)
	if not user_to_online:
		add_notification(data['user_to_id'], "new message from " + user_data['first_name'] + " " + user_data['last_name'])
예제 #8
0
def block(id_user):
	if not session.get('id_user_logged') and not id_user:
		return redirect('/')
	if if_user_blocked(session.get('id_user_logged'), id_user) or session.get('id_user_logged') == id_user:
		return redirect(request.referrer)
	block_user(session.get('id_user_logged'), id_user)
	if session.get('id_user_logged') and not id_user == session.get('id_user_logged'):
		msg = "User: "******" " + \
			session.get('user_data')['last_name'] + " block you."
		add_notification(id_user, msg)
		user = get_user_by_id(id_user)
		rating = user['rating'] - 10
		update_rating(rating, id_user)
	return redirect(request.referrer)
예제 #9
0
def ajax_add_user_request():
    auth_id = session.get('id_user_logged')
    user_id = request.args.get('user_id')

    if auth_id:
        if auth_id == user_id:
            return "same user"
        add_fr = add_friend(auth_id, user_id)
        if not add_fr:
            msg = "User: "******" " + \
             session.get('user_data')['last_name'] + " add you request to friends."
            add_notification(user_id, msg)
            return "waiting"
    return "false"
예제 #10
0
def ajax_delete_user_request():
    auth_id = session.get('id_user_logged')
    user_id = request.args.get('user_id')

    if auth_id:
        if auth_id == user_id:
            return "same user"
        del_fr = delete_user_request(auth_id, user_id)
        if not del_fr:
            msg = "User: "******" " + \
             session.get('user_data')['last_name'] + " delete request to friends."
            add_notification(user_id, msg)
            return "0"
    return "false"
예제 #11
0
def ajax_like_back_user():
    user_id = request.args.get('user_id')
    if not sympathys.check_sympathy(session.get('id'), user_id):
        sympathys.like_back_user(session.get('id'), user_id)
        sympathys.add_users_to_sympathys(session.get('id'), user_id)

        msg = 'You like each other! Now you can chat with ' + str(
            session.get('firstname')) + ' ' + str(
                session.get('lastname')) + '.'
        image = user_model.get_avatar(session.get('id'))
        notification_view.add_notification(session.get('id'), user_id, msg,
                                           'like_back_user', image)
        rating = user_model.get_user_fame_rating(user_id) + 20
        user_model.update_user_rating(rating, user_id)
        return json.dumps({'ok': True, 'error': "Liked_back"})
예제 #12
0
def album(id_user=None):
	if not session.get('id_user_logged') and not id_user:
		return redirect('/')
	if id_user:
		user = get_user_by_id(id_user)
		album = user_images(id_user)
	else:
		user = get_user_by_id(session.get('id_user_logged'))
		album = user_images(session.get('id_user_logged'))
	if session.get('id_user_logged') and not user['id_user'] == session.get('id_user_logged'):
		msg = "User: "******" " + \
			session.get('user_data')['last_name'] + " view your profile"
		add_notification(user['id_user'], msg)
	data = {
		'user': user,
		'all_friends': all_friends(user['id_user']),
		'album': album
	}
	return render_template("timeline-album.html", data=data)
예제 #13
0
def ajax_like():
    id_photo = request.form['id_photo']
    id_user = request.form['id_user']
    if not id_photo or not id_user:
        return json.dumps({'ok': False, 'error': "Something went wrong"})
    res = likes.like(id_photo, id_user)
    if res:
        to_whom_id = user_model.get_user_id_by_photo_id(id_photo)
        if to_whom_id != session.get('id'):
            msg = str(session.get('firstname')) + ' ' + str(
                session.get('lastname')) + ' liked your photo.'
            image = user_model.get_avatar(session.get('id'))
            notification_view.add_notification(session.get('id'), to_whom_id,
                                               msg, 'like', image)
        rating = user_model.get_user_fame_rating(to_whom_id) + 5
        user_model.update_user_rating(rating, to_whom_id)
        if res == 'was':
            return json.dumps({'ok': True, 'error': "Was dislike"})
        return json.dumps({'ok': True, 'error': "Like"})
    else:
        return json.dumps({'ok': False, 'error': "Remove like"})
예제 #14
0
def send_message(data):

    from_whom_id = data['from_whom_id']
    to_whom_id = data['to_whom_id']
    dialogue = id_dialogue_to_sid.get(request.sid)
    if not dialogue:
        dialogue = messages_model.get_dialogue_id(from_whom_id, to_whom_id)
    message = html.escape(data['message'])
    data['message'] = message
    user = user_model.get_user_by_id(from_whom_id)[0]
    data['user'] = user
    data['dialogue'] = dialogue
    data['my_id'] = session.get('id')
    if messages_model.send_message(dialogue, from_whom_id, to_whom_id,
                                   message):
        emit('add_message_to_template', data, room=dialogue)
    if not check_online_status(to_whom_id):
        notifications_view.add_notification(
            from_whom_id, to_whom_id, 'You have a new message from ' +
            user['firstname'] + ' ' + user['lastname'], 'message',
            user['avatar'])
예제 #15
0
def ajax_confirm_user_request():
    auth_id = session.get('id_user_logged')
    user_id = request.args.get('user_id')

    if auth_id:
        if auth_id == user_id:
            return "same user"
        conf_fr = confirm_user_request(user_id, auth_id)
        if not conf_fr:
            msg = "User: "******" " + \
             session.get('user_data')['last_name'] + " confirm you request to friends."
            add_notification(user_id, msg)
            user = get_user_by_id(user_id)
            rating = user['rating'] + 10
            update_rating(rating, user_id)
            user2 = get_user_by_id(auth_id)
            rating2 = user2['rating'] + 10
            update_rating(rating2, auth_id)
            session['friendlist'] = get_friendlist(auth_id)
            session['not_friends'] = get_not_friends(auth_id)
            return "1"
    return "false"
예제 #16
0
def ajax_like_user():
    user_id = request.args.get('user_id')
    if photos_model.get_photos_nbr_by_id(session.get('id')) > 0:
        if photos_model.get_photos_nbr_by_id(user_id) < 1:
            return json.dumps({
                'ok':
                False,
                'error':
                "To like a user, he must have at least one photo uploaded"
            })
        check = sympathys.check_request(session.get('id'), user_id)
        if not check:
            res = sympathys.like_user(session.get('id'), user_id)
            if res:
                msg = str(session.get('firstname')) + ' ' + str(
                    session.get('lastname')) + ' likes you!'
                image = user_model.get_avatar(session.get('id'))
                notification_view.add_notification(session.get('id'), user_id,
                                                   msg, 'like_user', image)
                rating = user_model.get_user_fame_rating(user_id) + 20
                user_model.update_user_rating(rating, user_id)
                return json.dumps({'ok': True, 'error': "Liked"})
            else:
                return json.dumps({
                    'ok': False,
                    'error': "Something went wrong"
                })
        else:
            return json.dumps({'ok': False, 'error': "It's your friend"})
    else:
        return json.dumps({
            'ok':
            False,
            'error':
            "To like a user, you must have at least one photo uploaded"
        })
예제 #17
0
def ajax_delete_user_friend():
    auth_id = session.get('id_user_logged')
    user_id = request.args.get('user_id')

    if auth_id:
        if auth_id == user_id:
            return "same user"
        res1 = delete_user_request(auth_id, user_id)
        if not res1:
            res2 = delete_user_request(user_id, auth_id)
            if not res2:
                msg = "User: "******" " + \
                 session.get('user_data')['last_name'] + " delete friendsip."
                add_notification(user_id, msg)
                user = get_user_by_id(user_id)
                rating = user['rating'] - 10
                update_rating(rating, user_id)
                user2 = get_user_by_id(auth_id)
                rating2 = user2['rating'] - 10
                update_rating(rating2, auth_id)
                session['friendlist'] = get_friendlist(auth_id)
                session['not_friends'] = get_not_friends(auth_id)
                return "0"
    return "false"
예제 #18
0
def profile(id_user=None):
    if not 'id' in session:
        return redirect('/')
    if 'id' in session:
        my_id = session.get('id')
        user = user_model.get_user_by_id(my_id)[0]
        friends = sympathys.get_sympathys_list(my_id)
        information = user_model.get_information(my_id)
        interests = user_model.get_interests_by_user_id(my_id)
        education = user_model.get_education_by_user_id(my_id)
        work = user_model.get_work_by_user_id(my_id)
        geolocation = geolocation_model.get_geolocation_by_user_id(my_id)

    if id_user:
        if not user_model.get_user_by_id(id_user):
            return render_template('404.html')
        user = user_model.get_user_by_id(id_user)[0]
        friends = sympathys.get_sympathys_list(id_user)
        information = user_model.get_information(id_user)
        interests = user_model.get_interests_by_user_id(id_user)
        education = user_model.get_education_by_user_id(id_user)
        work = user_model.get_work_by_user_id(id_user)
        geolocation = geolocation_model.get_geolocation_by_user_id(id_user)

        if id_user != session.get('id'):
            msg = str(session.get('firstname')) + ' ' + str(
                session.get('lastname')) + ' viewed your profile.'
            image = user_model.get_avatar(session.get('id'))
            notification_view.add_notification(session.get('id'), id_user, msg,
                                               'view', image)

    user['age'] = date.today().year - datetime.strptime(
        user['birth_date'], '%Y-%m-%d %H:%M:%S').year

    data = {
        'user':
        user,
        'friends':
        friends,
        'sympathys':
        sympathys,
        'information':
        information,
        'interests':
        interests,
        'education':
        education,
        'work':
        work,
        'geolocation':
        geolocation,
        'unread_messages_nbr':
        messages_model.get_unread_messages_nbr_by_user_id(session.get('id')),
        'incoming_requests_nbr':
        sympathys.get_incoming_requests_nbr(session.get('id')),
        'check_block':
        sympathys.check_block,
        'offline_users':
        get_offline_users(),
        'online_users':
        get_online_users()
    }
    return render_template('profile.html', data=data)