def add_rating(rating): rating_object = Rating(rating=rating) session.add(rating_object) session.commit()
db.create_all() user_filename = "seed_data/u.user" movie_filename = "seed_data/u.item" rating_filename = "seed_data/u.data" load_users(user_filename) load_movies(movie_filename) load_ratings(rating_filename) # Mimic what we did in the interpreter, and add the Eye and some ratings eye = User(email="*****@*****.**", password="******") db.session.add(eye) db.session.commit() # Toy Story r = Rating(user_id=eye.user_id, movie_id=1, score=1) db.session.add(r) # Robocop 3 r = Rating(user_id=eye.user_id, movie_id=1274, score=5) db.session.add(r) # Judge Dredd r = Rating(user_id=eye.user_id, movie_id=373, score=5) db.session.add(r) # 3 Ninjas r = Rating(user_id=eye.user_id, movie_id=314, score=5) db.session.add(r) # Aladdin
def create_rating(user, movie, score): """ Creates movie rating""" rating = Rating(user=user, movie=movie, score=score) db.session.add(rating) db.session.commit() return rating
def display_movie(movie_id): """Displays details for specified movie and allow user to add rating.""" # Prevents unlogged in users from adding ratings user_has_rated = None # Find current user if logged in if session.get('username'): user_id = session.get('user_id') # Determine if user has previously rated this movie user_has_rated = Rating.query.filter_by(user_id=user_id, movie_id=movie_id).first() # Return movie ratings on GET request if request.method == 'GET': movie = Movie.query.filter_by(movie_id=movie_id).first() rating_scores = [r.score for r in movie.ratings] avg_rating = float(sum(rating_scores)) / len(rating_scores) prediction = None if (not user_has_rated) and user_id: user = User.query.get(user_id) if user: prediction = user.predict_rating(movie) # Either use the prediction or their real rating if prediction: # User hasn't scored; use our prediction if we made one effective_rating = prediction elif user_has_rated: # User has already scored for real; use that effective_rating = user_has_rated.score else: # User hasn't scored, and we couldn't get a prediction effective_rating = None # Get the eye's rating, either by predicting or using real rating the_eye = (User.query.filter_by(email="*****@*****.**") .first()) eye_rating = Rating.query.filter_by( user_id=the_eye.user_id, movie_id=movie.movie_id).first() if eye_rating is None: eye_rating = the_eye.predict_rating(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 if difference is not None: beratement = BERATEMENT_MESSAGES[int(difference)] else: beratement = None return render_template("movie_details.html", movie=movie, user_has_rated=user_has_rated, average=avg_rating, prediction=prediction, beratement=beratement) # Handle new movie rating on POST request else: # Get form input score = request.form.get("score") # If user has already rated, update the score if user_has_rated: user_has_rated.score = score # Else add new rating to database else: rating = Rating(movie_id=movie_id, user_id=user_id, score=score) db.session.add(rating) # Commit changes to database db.session.commit() flash("Your rating of {} has been added.".format(score)) return redirect("/movies/" + movie_id)
def setUp(self): self.mongo_client.drop_database(DATABASE_NAME) self.player_1_id = ObjectId() self.player_2_id = ObjectId() self.player_3_id = ObjectId() self.player_4_id = ObjectId() self.player_5_id = ObjectId() self.player_1 = Player(name='gaR', aliases=['gar', 'garr'], ratings={ 'norcal': Rating(), 'texas': Rating() }, regions=['norcal', 'texas'], id=self.player_1_id) self.player_2 = Player(name='sfat', aliases=['sfat', 'miom | sfat'], ratings={'norcal': Rating()}, regions=['norcal'], id=self.player_2_id) self.player_3 = Player(name='mango', aliases=['mango', 'gar'], ratings={'norcal': Rating(mu=2, sigma=3)}, regions=['socal'], id=self.player_3_id) self.player_4 = Player(name='shroomed', aliases=['shroomed'], ratings={'norcal': Rating()}, regions=['norcal'], id=self.player_4_id) self.player_5 = Player(name='pewpewu', aliases=['pewpewu'], ratings={'norcal': Rating()}, regions=['norcal', 'socal'], id=self.player_5_id) self.merge_player_1 = Player(name='CLGsFaT', aliases=['clg | sfat'], ratings={'norcal': Rating()}, regions=['norcal'], id=ObjectId()) # only includes players 1-3 self.players = [self.player_1, self.player_2, self.player_3] self.tournament_id_1 = ObjectId() self.tournament_type_1 = 'tio' self.tournament_raw_id_1 = ObjectId() self.tournament_date_1 = datetime(2013, 10, 16) self.tournament_name_1 = 'tournament 1' self.tournament_players_1 = [ self.player_1_id, self.player_2_id, self.player_3_id, self.player_4_id ] self.tournament_matches_1 = [ Match(winner=self.player_1_id, loser=self.player_2_id), Match(winner=self.player_3_id, loser=self.player_4_id) ] self.tournament_regions_1 = ['norcal'] # tournament 2 is earlier than tournament 1, but inserted after self.tournament_id_2 = ObjectId() self.tournament_type_2 = 'challonge' self.tournament_raw_id_2 = ObjectId() self.tournament_date_2 = datetime(2013, 10, 10) self.tournament_name_2 = 'tournament 2' self.tournament_players_2 = [ self.player_5_id, self.player_2_id, self.player_3_id, self.player_4_id ] self.tournament_matches_2 = [ Match(winner=self.player_5_id, loser=self.player_2_id), Match(winner=self.player_3_id, loser=self.player_4_id) ] self.tournament_regions_2 = ['norcal', 'texas'] self.tournament_1 = Tournament(id=self.tournament_id_1, name=self.tournament_name_1, type=self.tournament_type_1, date=self.tournament_date_1, regions=self.tournament_regions_1, raw_id=self.tournament_raw_id_1, players=self.tournament_players_1, matches=self.tournament_matches_1) self.tournament_2 = Tournament(id=self.tournament_id_2, name=self.tournament_name_2, type=self.tournament_type_2, date=self.tournament_date_2, regions=self.tournament_regions_2, raw_id=self.tournament_raw_id_2, players=self.tournament_players_2, matches=self.tournament_matches_2) self.tournament_ids = [self.tournament_id_1, self.tournament_id_2] self.tournaments = [self.tournament_1, self.tournament_2] self.pending_tournament_id_1 = ObjectId() self.pending_tournament_type_1 = 'tio' self.pending_tournament_raw_id_1 = ObjectId() self.pending_tournament_date_1 = datetime(2013, 10, 11) self.pending_tournament_name_1 = 'pending tournament 1' self.pending_tournament_players_1 = [ self.player_1.name, self.player_2.name, self.player_3.name, self.player_4.name ] self.pending_tournament_matches_1 = [ AliasMatch(winner=self.player_1.name, loser=self.player_2.name), AliasMatch(winner=self.player_3.name, loser=self.player_4.name) ] self.pending_tournament_regions_1 = ['norcal'] self.pending_tournament_1 = PendingTournament( id=self.pending_tournament_id_1, name=self.pending_tournament_name_1, type=self.pending_tournament_type_1, date=self.pending_tournament_date_1, regions=self.pending_tournament_regions_1, raw_id=self.pending_tournament_raw_id_1, players=self.pending_tournament_players_1, matches=self.pending_tournament_matches_1) self.pending_tournaments = [self.pending_tournament_1] self.ranking_entry_1 = RankingEntry(rank=1, player=self.player_1_id, rating=20) self.ranking_entry_2 = RankingEntry(rank=2, player=self.player_2_id, rating=19) self.ranking_entry_3 = RankingEntry(rank=3, player=self.player_3_id, rating=17.5) self.ranking_entry_4 = RankingEntry(rank=3, player=self.player_4_id, rating=16.5) self.ranking_time_1 = datetime(2013, 4, 20) self.ranking_time_2 = datetime(2013, 4, 21) self.ranking_1 = Ranking(id=ObjectId(), region='norcal', time=self.ranking_time_1, tournaments=self.tournament_ids, ranking=[ self.ranking_entry_1, self.ranking_entry_2, self.ranking_entry_3 ]) self.ranking_2 = Ranking(id=ObjectId(), region='norcal', time=self.ranking_time_2, tournaments=self.tournament_ids, ranking=[ self.ranking_entry_1, self.ranking_entry_2, self.ranking_entry_4 ]) self.ranking_3 = Ranking( id=ObjectId(), region='norcal', time=self.ranking_time_2, tournaments=self.tournament_ids, ranking=[self.ranking_entry_1, self.ranking_entry_2]) self.rankings = [self.ranking_1, self.ranking_2, self.ranking_3] self.user_id_1 = 'abc123' self.user_admin_regions_1 = ['norcal', 'texas'] self.user_1 = User(id=self.user_id_1, admin_regions=self.user_admin_regions_1, username='******', salt='nacl', hashed_password='******', admin_level='REGION') self.user_id_2 = 'asdfasdf' self.user_full_name_2 = 'Full Name' self.user_admin_regions_2 = [] self.user_2 = User(id=self.user_id_2, admin_regions=self.user_admin_regions_2, username=self.user_full_name_2, salt='nacl', hashed_password='******', admin_level='REGION') self.superadmin_id = '123456' self.superadmin_full_name = 'superadmin' self.superadmin_admin_regions = [] self.superadmin = User( id=self.superadmin_id, user_admin_regions=self.superadmin_admin_regions, username=self.superadmin_full_name, salt='nacl', hashed_password='******', admin_level='SUPER') self.users = [self.user_1, self.user_2, self.superadmin] self.region_1 = Region(id='norcal', display_name='Norcal') self.region_2 = Region(id='texas', display_name='Texas') self.regions = [self.region_1, self.region_2] for region in self.regions: Dao.insert_region(region, self.mongo_client, database_name=DATABASE_NAME) self.norcal_dao = Dao('norcal', self.mongo_client, database_name=DATABASE_NAME) for player in self.players: self.norcal_dao.insert_player(player) for tournament in self.tournaments: self.norcal_dao.insert_tournament(tournament) for pending_tournament in self.pending_tournaments: self.norcal_dao.insert_pending_tournament(pending_tournament) for ranking in self.rankings: self.norcal_dao.insert_ranking(ranking) for user in self.users: self.norcal_dao.insert_user(user)