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"
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"]))
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'))
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)
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)
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"
def get_profile(user_id): return json.dumps(db.get_user_profile(user_id))