Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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")
Exemplo n.º 5
0
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("/")
Exemplo n.º 6
0
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,
Exemplo n.º 7
0
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))
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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))
Exemplo n.º 13
0
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))
Exemplo n.º 14
0
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))
Exemplo n.º 17
0
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,
Exemplo n.º 18
0
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))
Exemplo n.º 21
0
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))