Ejemplo n.º 1
0
def put_affinity(user_id, category, affinity):
    user_profile = db.get_user_profile(user_id)
    user_profile[category]["rating"], user_profile[category]["confidence"] = (
        recommendation_system.update_rating_flat(
            user_profile[category]["rating"],
            user_profile[category]["confidence"], affinity))
    db.flush_user_profile(user_id, user_profile)
    return "OK"
Ejemplo n.º 2
0
def view_profile():
    if "logged in" not in SESSION or not SESSION["logged in"]:
        flash("You must log in!")
        return redirect(url_for('login'))
    if request.method == 'GET':
        return render_template(
            'view_profile.html',
            user_details=db.get_user_profile(SESSION["user"]),
            all_quests=db.get_quests_not_complete(SESSION["user"]))
    if request.form['action'] == 'skills':
        return redirect(url_for('profile_update_skills'))
    elif request.form['action'] == 'quests':
        quest_added_success = db.add_quest_to_user(
            SESSION["user"], request.form["quest_to_add"])
        if not quest_added_success[0]:
            flash(quest_added_success[1])
    return render_template('view_profile.html',
                           user_details=db.get_user_profile(SESSION["user"]),
                           all_quests=db.get_quests_not_complete(
                               SESSION["user"]))
Ejemplo n.º 3
0
def profile_update_skills():
    if "logged in" not in SESSION or not SESSION["logged in"]:
        flash("You must log in!")
        return redirect(url_for('login'))
    if request.method == 'GET':
        return render_template('edit_user_skills.html',
                               user_details=db.get_user_profile(
                                   SESSION["user"]))
    successfully_updated_skills = db.update_user_skills(
        SESSION["user"], request.form)
    if not successfully_updated_skills[0]:
        flash("There was an error: {}".format(successfully_updated_skills[1]))
    return redirect(url_for('view_profile'))
Ejemplo n.º 4
0
def get_profile_summary(user_id):
    user_profile = db.get_user_profile(user_id)
    score_category = [(value["rating"] * value["confidence"], key)
                      for key, value in user_profile.items()]
    list.sort(score_category, reverse=True)
    response_data = []
    for score, category in score_category[:5]:
        display_name = foursquare_api.get_category_display_name(category)
        icon_url = foursquare_api.get_category_icon_url(category)
        response_data.append({
            "category_id": category,
            "display_name": display_name,
            "icon_url": icon_url,
            "interest": score
        })
    return json.dumps(response_data)
Ejemplo n.º 5
0
def get_locations_to_rate(user_id):
    user_data = db.get_user_locations_to_rate(user_id)

    user_profile = db.get_user_profile(user_id)
    questions_to_ask = recommendation_system.find_questions_to_ask(
        user_profile)

    output_places = []
    for entry in user_data:
        output_places.append({
            "place_id": entry[0],
            "name": entry[1],
            "date_of_visit": entry[2],
            "photo_url": entry[3],
            "description": entry[4],
            "location": entry[5]
        })

    output_categories = []
    for category in questions_to_ask:
        output_categories.append({
            "category_id":
            category,
            "name":
            foursquare_api.get_category_display_name(category),
            "icon_url":
            foursquare_api.get_category_icon_url(category)
        })

    print(len(output_categories), len(output_places))
    question_probability = 0.3

    output = []
    for _ in range(10):
        if np.random.random() < question_probability and len(
                output_categories) > 0:
            output.append({"question": output_categories[0]})
            output_categories = output_categories[1:]
        elif len(output_places) > 0:
            output.append({"place": output_places[0]})
            output_places = output_places[1:]
        elif len(output_categories) > 0:
            output.append({"question": output_categories[0]})
            output_categories = output_categories[1:]

    return json.dumps(output)
Ejemplo n.º 6
0
def put_location(user_id, place_id, rating, time_of_visit):
    one_day = 24 * 3600
    time_of_visit = time_of_visit % one_day

    # Update user ratings
    user_ratings = db.get_user_ratings(user_id)
    if place_id in user_ratings:
        user_ratings[place_id]["rating"], user_ratings[place_id][
            "confidence"] = recommendation_system.update_rating_flat(
                user_ratings[place_id]["rating"],
                user_ratings[place_id]["confidence"], rating)
        user_ratings[place_id]["visits"].append(time_of_visit)
    else:
        user_ratings[place_id] = {}
        user_ratings[place_id]["rating"] = rating
        user_ratings[place_id]["confidence"] = 1.0
        user_ratings[place_id]["visits"] = [time_of_visit]

    user_profile = db.get_user_profile(user_id)
    place_categories = db.get_venue_data(place_id)["categories"]
    res = []
    for cat in place_categories:
        res.append(cat)
        while cat in foursquare_api.category_to_parent:
            cat = foursquare_api.category_to_parent[cat]
            if cat != "":
                res.append(cat)

    place_categories = list(set(res))
    for category in place_categories:
        user_profile[category]["rating"], user_profile[category][
            "confidence"] = (recommendation_system.update_rating_flat(
                user_profile[category]["rating"],
                user_profile[category]["confidence"], rating))
    db.flush_user_ratings(user_id, user_ratings)
    db.flush_user_profile(user_id, user_profile)
    return "OK"
Ejemplo n.º 7
0
def get_profile(user_id):
    return json.dumps(db.get_user_profile(user_id))