Пример #1
0
def rate_movie(movie_id):
    if session.get('logged_in_user') is None:
        flash("You must be logged in to rate a movie. Log in now!")
        return redirect('/login')
    else:
        user_id = session['logged_in_user']
        rating = request.args.get('rating')
        rating_row = Rating.get_rating(movie_id, user_id)
        if rating_row is None:
            Rating.create_new_rating(movie_id, user_id, rating)
        else:
            rating_row.update_rating(rating)
        flash("Your rating has been successfully received!")
        return redirect('/movies/%s' % movie_id)
Пример #2
0
def display_movie_details(movie_id):
    display_movie = Movie.query.get(movie_id)
    rating_list = Rating.get_movie_ratings(movie_id)

    user_id = session.get('logged_in_user')

    if user_id:
        rating = Rating.get_rating(movie_id, user_id)
    else:
        rating = None

    # rating = Rating.get_rating(movie_id, user_id)
    rating_scores = [r.score for r in rating_list]
    avg_score = float(sum(rating_scores)) / len(rating_scores)

    prediction = None
    if (not rating) and user_id:
        user = User.query.get(user_id)
        if user:
            print "~~~~~Current movie:", display_movie
            prediction = user.predict_rating(display_movie)


    if prediction:
        # User hasn't scored - use prediction if there is one
        effective_rating = prediction

    elif rating:
        # User has already scored -  use that
        effective_rating = rating.score

    else:
        # User hasn't scored - prediction not possib;e
        effective_rating = None

    # Get the eye's rating using prediction or the real rating

    the_eye = User.query.filter_by(email="*****@*****.**").one()
    eye_rating = Rating.query.filter_by(
        user_id=the_eye.user_id, movie_id=display_movie.movie_id).first()

    if eye_rating is None:
        eye_rating = the_eye.predict_rating(display_movie)

    else:
        eye_rating = eye_rating.score

    if eye_rating and effective_rating:
        difference = abs(eye_rating - effective_rating)

    else:
        # We couldn't get an eye rating, so we'll skip difference
        difference = None


    BERATEMENT_MESSAGES = [
        "I suppose you don't have such bad taste after all.",
        "I regret every decision that I've ever made that has brought me" +
            " to listen to your opinion.",
        "Words fail me, as your taste in movies has clearly failed you.",
        "That movie is great. For a clown to watch. Idiot.",
        "Words cannot express the awfulness of your taste."
    ]

    if difference is not None:
        beratement = BERATEMENT_MESSAGES[int(difference)]

    else:
        beratement = None

    print "beratement:", beratement
    return render_template("movie_details.html", display_movie=display_movie, rating_list=rating_list, user_rating=rating, average=avg_score, prediction=prediction, beratement=beratement)