def show_login(): model.add_pageview(user_id=None, item_id=None, page="login", activity_type="enter login page", rating=None) #pageview return render_template("login.html")
def to_overall_feedback(): model.add_pageview(user_id=session["user"], item_id=None, page="feedback", activity_type="start viewing overall feedback", rating=None) #pageview return render_template("feedback.html")
def view_combined_recommendations(id): rec, pred_1, pred_2, pred_3, pred_4, pred_5, pred_6, pred_7, pred_8, pred_9, pred_10 = model.show_recommendations1( id) rec2, pred_11, pred_12, pred_13, pred_14, pred_15, pred_16, pred_17, pred_18, pred_19, pred_20 = model.show_recommendations2( id) model.add_pageview(user_id=session["user"], item_id=None, page="recommendations", activity_type="start viewing combined recommendations", rating=None) #pageview return render_template("combined_recommendations.html", id=id, rec=rec, pred_1=pred_1, pred_2=pred_2, pred_3=pred_3, pred_4=pred_4, pred_5=pred_5, pred_6=pred_6, pred_7=pred_7, pred_8=pred_8, pred_9=pred_9, pred_10=pred_10, rec2=rec2, pred_11=pred_11, pred_12=pred_12, pred_13=pred_13, pred_14=pred_14, pred_15=pred_15, pred_16=pred_16, pred_17=pred_17, pred_18=pred_18, pred_19=pred_19, pred_20=pred_20)
def instructions(): model.add_pageview(user_id=session["user"], item_id=None, page="feedback", activity_type="start viewing instructions", rating=None) #pageview return render_template("instructions.html")
def process_logout(): model.add_pageview(user_id=session["user"], item_id=None, page="logout", activity_type="user logout", rating=None) #pageview session.clear() return redirect("/")
def view_recommended_item_details(id): item_ratings = model.show_item_details(id) item = item_ratings[0].item model.add_pageview(user_id=session["user"], item_id=item.id, page="item", activity_type="recommended item view", rating=None) #pageview return render_template("view_recommended_item.html", item=item) #prediction_items=prediction_items,
def cart_update(): user_id = session['user'] item_id = request.form.get("item") model.add_cart(user_id, item_id) model.add_pageview(user_id=session["user"], item_id=item_id, page="cart", activity_type="add to cart", rating=None) #pageview flash("You've added to your shopping cart!") return redirect(url_for('show_user_details', id=user_id))
def overall_feedback(): user_id = session['user'] novelty = request.form.get("novelty") unexpectedness = request.form.get("unexpectedness") model.add_feedback(user_id, novelty, unexpectedness) model.add_pageview(user_id=session["user"], item_id=None, page="feedback", activity_type="finish viewing and giving feedback", rating=None) #pageview flash("Thank you for the overall feedback!") return redirect(url_for('show_user_details', id=user_id))
def show_user_details(id): user_id = session["user"] model.add_pageview(user_id=user_id, item_id=None, page="Movie List", activity_type="enter Movie List", rating=None) #pageview user = model.session.query(model.User).filter_by(id=id).join( model.Rating).join(model.Item).first() ratings = model.session.query(model.Rating).options( joinedload(model.Rating.item)).filter_by(user_id=id).all() return render_template("view_user.html", user=user, ratings=ratings)
def show_cart_details(id): user = model.session.query(model.User).filter_by(id=id).join( model.ShoppingCart).join(model.Item).first() shopitem = model.session.query(model.ShoppingCart).options( joinedload(model.ShoppingCart.item)).filter_by(user_id=id).all() # ratings = model.session.query(model.Rating).options(joinedload(model.Rating.item)).filter_by(user_id=id).all() # return render_template("view_user.html", user=user, ratings=ratings) model.add_pageview(user_id=session["user"], item_id=None, page="cart", activity_type="view cart", rating=None) #pageview return render_template("shoppercart.html", user=user, shopitem=shopitem)
def update_algo(): algorithm_1 = request.form.get("algorithm_1") algorithm_2 = request.form.get("algorithm_2") model.update_current_algo(id=1, algorithm=algorithm_1) model.update_current_algo(id=2, algorithm=algorithm_2) model.add_pageview(user_id=None, item_id=None, page="update_recommender", activity_type='updated recommenders', rating=None) #pageview # model.add_pageview(user_id=session["user"], item_id=item_id, page="item", activity_type="end item view",rating=None) #pageview flash("You've changed algorithms") return redirect(url_for('view_algo'))
def update_rating(): new_rating = request.form.get("rating") item_id = request.form.get("item") user_id = session['user'] model.update_rating(user_id, item_id, new_rating) model.add_pageview(user_id=session["user"], item_id=item_id, page="item", activity_type="rate item", rating=new_rating) #pageview model.add_pageview(user_id=session["user"], item_id=item_id, page="item", activity_type="end item view", rating=None) #pageview flash("You've changed your rating for this item") return redirect(url_for('show_user_details', id=user_id))
def overall_feedback(): user_id = session['user'] novelty = request.form.get("novelty") unexpectedness = request.form.get("unexpectedness") satisfaction = request.form.get("satisfaction") recommendation = request.form.get("recommendation") overall_unexp_implicit = request.form.get("overall_unexp_implicit") model.add_feedback(user_id, novelty, unexpectedness, satisfaction, recommendation, overall_unexp_implicit) model.add_pageview( user_id=session["user"], item_id=None, page="feedback", activity_type="finish viewing and giving overall feedback", rating=None) #pageview flash("Thank you for the overall feedback!") return redirect(url_for('view_combined_recommendations', id=user_id))
def make_new_account(): email = request.form.get("email") password = request.form.get("password") turk_id = request.form.get("turk_id") age = request.form.get("age") gender = request.form.get("gender") occupation = request.form.get("occupation") state = request.form.get("state") country = request.form.get("country") model.create_user(email, password, turk_id, age, gender, occupation, state, country) model.add_pageview(user_id=None, item_id=None, page="signup", activity_type="successful signup", rating=None) #pageview flash("You're registered! Now please log in") return redirect('/login')
def view_recommendations(id): rec, pred_1, pred_2, pred_3, pred_4, pred_5, pred_6, pred_7, pred_8, pred_9, pred_10 = model.show_recommendations( id) model.add_pageview(user_id=session["user"], item_id=None, page="recommendations", activity_type="start viewing recommendations", rating=None) #pageview return render_template("recommendations.html", id=id, rec=rec, pred_1=pred_1, pred_2=pred_2, pred_3=pred_3, pred_4=pred_4, pred_5=pred_5, pred_6=pred_6, pred_7=pred_7, pred_8=pred_8, pred_9=pred_9, pred_10=pred_10)
def process_login(): email = request.form.get("email") password = request.form.get("password") user = model.get_user_from_email(email) if user == None: flash("This user is not registered yet") model.add_pageview( user_id=None, item_id=None, page="login", activity_type="non-registered id / incorrect details", rating=None) #pageview return redirect('signup') else: session['user'] = user.id model.add_pageview(user_id=user.id, item_id=None, page="login", activity_type="successful login", rating=None) #pageview return redirect(url_for('show_user_details', id=user.id))
def view_algo(): algo1_id = model.show_current_algo(1) model.add_pageview(user_id=None, item_id=None, page="current_recommender", activity_type='current recommender 1 is ' + str(algo1_id[0].algorithm)[13:].upper(), rating=None) #pageview algo2_id = model.show_current_algo(2) model.add_pageview(user_id=None, item_id=None, page="current_recommender", activity_type='current recommender 2 is ' + str(algo2_id[0].algorithm)[13:].upper(), rating=None) #pageview # algo1 = algo1_id[0] # algo_11 = model.update_current_algo(2) # model.add_pageview(user_id=session["user"], item_id=item.id, page="item", activity_type="start item view",rating=None) #pageview return render_template( "algo.html", algo1_id=algo1_id, algo2_id=algo2_id) #prediction_items=prediction_items,
def within_feedback(): user_id = session['user'] within_unexp_find = request.form.get("within_unexp_find") within_unexp_implicit = request.form.get("within_unexp_implicit") within_novel = request.form.get("within_novel") within_diversity = request.form.get("within_diversity") within_satisfaction = request.form.get("within_satisfaction") any_feedback = request.form.get("any_feedback") model.add_within_feedback(user_id, within_unexp_find, within_unexp_implicit, within_novel, within_diversity, within_satisfaction, any_feedback) model.add_pageview(user_id=session["user"], item_id=None, page="within feedback", activity_type="finish the with-effects feedback", rating=None) #pageview flash( "Thank you for using the website! You can LOG OUT now OR continue experimenting!" ) flash("See how your recommendations change with more or different items!") # return redirect(url_for('process_logout')) return redirect(url_for('show_user_details', id=user_id))
def add_rec_rating(): user_id = session['user'] user_rating_1 = request.form.get("user_rating_1") user_rating_2 = request.form.get("user_rating_2") user_rating_3 = request.form.get("user_rating_3") user_rating_4 = request.form.get("user_rating_4") user_rating_5 = request.form.get("user_rating_5") user_rating_6 = request.form.get("user_rating_6") user_rating_7 = request.form.get("user_rating_7") user_rating_8 = request.form.get("user_rating_8") user_rating_9 = request.form.get("user_rating_9") user_rating_10 = request.form.get("user_rating_10") model.add_rec_rating(user_id, user_rating_1, user_rating_2, user_rating_3, user_rating_4, user_rating_5, user_rating_6, user_rating_7, user_rating_8, user_rating_9, user_rating_10) model.add_pageview(user_id=session["user"], item_id=None, page="recommendations", activity_type="rate recommendations and finish view", rating=None) #pageview flash("You've rated your recommendations!Thank you for the feedback!") return redirect(url_for('to_overall_feedback', id=user_id))
def recsys_compute(id): user_id = session['user'] model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="initialize recommender", rating=None) #pageview model.delete_recommendations() anchoring_exp = AnchoringExperiment(userid=random.random()) selector = anchoring_exp.get("var") if selector == 1: recommender1.compute_recommendations() model.add_algo(user_id=user_id, algorithm="KNNBasic", mae=recommender1.mae1, rmse=recommender1.rmse1) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="used recommender 1", rating=None) #pageview else: recommender2.compute_recommendations() model.add_algo(user_id=user_id, algorithm="NMF", mae=recommender2.mae2, rmse=recommender2.rmse2) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="used recommender 2", rating=None) #pageview model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="finish recommender computation", rating=None) #pageview flash( "You've computed Recommendations! Please dont re-run until new recommendations are required!!" ) # return render_template("recommendations.html", id=id) return redirect(url_for('view_recommendations', id=id))
def recsys_compute(id): user_id = session['user'] model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="initialize recommender", rating=None) #pageview model.delete_recommendations1() model.delete_recommendations2() model.delete_numeric_predictions1() model.delete_numeric_predictions2() # A/B Testng and algorithm randomization. Since we have to randomize which algorithm recommendentations to show first, a list of lists is used # for random selection. The results are then appended to two separate tables depending on the algorithm. # HERE algorithm 1 is recommender3_svd # HERE algorithm 2 is recommender4_knn select_list = [[1, 2], [2, 1]] selector = random.choice(select_list) if selector[0] == 1: # Run algorithm 1 first algo1_id = model.show_current_algo(1) recommender1 = __import__(algo1_id[0].algorithm) recommender1.compute_recommendations( user_id=user_id, prediction_table='recommendations1', numeric_prediction_table='transposed_prediction1') model.add_algo(user_id=user_id, algorithm=str(algo1_id[0].algorithm)[13:].upper()) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type='used recommender ' + str(algo1_id[0].algorithm)[13:].upper(), rating=None) #pageview # Run algorithm 2 algo2_id = model.show_current_algo(2) recommender2 = __import__(algo2_id[0].algorithm) recommender2.compute_recommendations( user_id=user_id, prediction_table='recommendations2', numeric_prediction_table='transposed_prediction2') model.add_algo(user_id=user_id, algorithm=str(algo2_id[0].algorithm)[13:].upper()) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type='used recommender ' + str(algo2_id[0].algorithm)[13:].upper(), rating=None) #pageview else: algo2_id = model.show_current_algo(2) recommender2 = __import__(algo2_id[0].algorithm) recommender2.compute_recommendations( user_id=user_id, prediction_table='recommendations1', numeric_prediction_table='transposed_prediction1') model.add_algo(user_id=user_id, algorithm=str(algo2_id[0].algorithm)[13:].upper()) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type='used recommender ' + str(algo2_id[0].algorithm)[13:].upper(), rating=None) #pageview # Run algorithm 1 algo1_id = model.show_current_algo(1) recommender1 = __import__(algo1_id[0].algorithm) recommender1.compute_recommendations( user_id=user_id, prediction_table='recommendations2', numeric_prediction_table='transposed_prediction2') model.add_algo(user_id=user_id, algorithm=str(algo1_id[0].algorithm)[13:].upper()) model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type='used recommender ' + str(algo1_id[0].algorithm)[13:].upper(), rating=None) #pageview model.add_pageview(user_id=session["user"], item_id=None, page="recommender_algorithm", activity_type="finish recommender computation", rating=None) #pageview flash( "You've computed Recommendations! Please dont re-run until new recommendations are required!!" ) # return render_template("recommendations.html", id=id) return redirect(url_for('view_recommendations', id=id))