def home(): return render_template( 'home/home.html', selected_movies=utilities.get_selected_movies(), genre_urls=utilities.get_genres_and_urls(), actor_urls=utilities.get_actors_and_urls(), director_urls=utilities.get_directors_and_urls(), )
def watchlist(): username = session['username'] user_watchlist = services.get_watchlist(username, repo.repo_instance) movies_per_page = 3 # Read query parameters. cursor = request.args.get('cursor') movie_to_show_reviews = request.args.get('view_reviews_for') if movie_to_show_reviews is None: # No view-reviews query parameter, so set to a non-existent movie id. movie_to_show_reviews = -1 else: # Convert movie_to_show_reviews from string to int. movie_to_show_reviews = int(movie_to_show_reviews) if cursor is None: # No cursor query parameter, so initialise cursor to start at the beginning. cursor = 0 else: # Convert cursor from string to int. cursor = int(cursor) # Retrieve the batch of movies to display on the Web page. movies = services.movies_to_dict(user_watchlist) first_movie_url = None last_movie_url = None next_movie_url = None prev_movie_url = None if cursor > 0: # There are preceding movies, so generate URLs for the 'previous' and 'first' navigation buttons. prev_movie_url = url_for('movie_library_bp.watchlist', cursor=cursor - movies_per_page) first_movie_url = url_for('movie_library_bp.watchlist') if cursor + movies_per_page < len(movies): # There are further movies, so generate URLs for the 'next' and 'last' navigation buttons. next_movie_url = url_for('movie_library_bp.watchlist', cursor=cursor + movies_per_page) last_cursor = movies_per_page * int(len(movies) / movies_per_page) if len(movies) % movies_per_page == 0: last_cursor -= movies_per_page last_movie_url = url_for('movie_library_bp.watchlist', cursor=last_cursor) # Construct urls for viewing movie reviews and adding reviews. for movie in movies: movie['view_review_url'] = url_for('movie_library_bp.watchlist', cursor=cursor, view_reviews_for=movie['id']) movie['add_review_url'] = url_for( 'movie_library_bp.write_review_on_movie', movie=movie['id']) movie['add_to_watchlist_url'] = url_for( 'movie_library_bp.add_to_watchlist', movie=movie['id']) movie['remove_from_watchlist_url'] = url_for( 'movie_library_bp.remove_from_watchlist', movie=movie['id']) # Generate the webpage to display the movies. return render_template('movie_library/movies.html', title='Movies', movies_title=username + "'s Watch List", movies=movies, selected_movies=utilities.get_selected_movies(3), actor_urls=utilities.get_actors_and_urls(), director_urls=utilities.get_directors_and_urls(), genre_urls=utilities.get_genres_and_urls(), first_movie_url=first_movie_url, last_movie_url=last_movie_url, prev_movie_url=prev_movie_url, next_movie_url=next_movie_url, show_reviews_for_movie=movie_to_show_reviews, is_watchlist=True)
def movies_by_rank(): # Read query parameters. target_id = request.args.get('id') movie_to_show_reviews = request.args.get('view_reviews_for') # Fetch the first and last movies in the series. first_movie = services.get_first_movie(repo.repo_instance) last_movie = services.get_last_movie(repo.repo_instance) if target_id is None: # No id query parameter, so return movies from day 1 of the series. target_id = first_movie['id'] else: # Convert target_year from string to int. target_id = int(target_id) if movie_to_show_reviews is None: # No view-reviews query parameter, so set to a non-existent movie id. movie_to_show_reviews = -1 else: # Convert movie_to_show_reviews from string to int. movie_to_show_reviews = int(movie_to_show_reviews) # Fetch movie(s) for the target id. This call also returns the previous and next ids for movies immediately # before and after the target. movies, previous_id, next_id = services.get_movies_by_rank( target_id, repo.repo_instance) first_movie_url = None last_movie_url = None next_movie_url = None prev_movie_url = None if len(movies) > 0: # There's at least one movie for the target id. if previous_id is not None: # There are movie on a previous id, so generate URLs for the 'previous' and 'first' navigation buttons. prev_movie_url = url_for('movie_library_bp.movies_by_rank', id=previous_id) first_movie_url = url_for('movie_library_bp.movies_by_rank', id=first_movie['id']) # There are movies subsequent, so generate URLs for the 'next' and 'last' navigation buttons. if next_id is not None: next_movie_url = url_for('movie_library_bp.movies_by_rank', id=next_id) last_movie_url = url_for('movie_library_bp.movies_by_rank', id=last_movie['id']) # Construct urls for viewing movie reviews and adding reviews. for movie in movies: movie['view_review_url'] = url_for( 'movie_library_bp.movies_by_rank', id=target_id, view_reviews_for=movie['id']) movie['add_review_url'] = url_for( 'movie_library_bp.write_review_on_movie', movie=movie['id']) movie['add_to_watchlist_url'] = url_for( 'movie_library_bp.add_to_watchlist', movie=movie['id']) # Generate the webpage to display the movies. return render_template( 'movie_library/movies.html', title='Movies', movies_title="Ranked: " + str(target_id), movies=movies, selected_movies=utilities.get_selected_movies(3), actor_urls=utilities.get_actors_and_urls(), director_urls=utilities.get_directors_and_urls(), genre_urls=utilities.get_genres_and_urls(), first_movie_url=first_movie_url, last_movie_url=last_movie_url, prev_movie_url=prev_movie_url, next_movie_url=next_movie_url, show_reviews_for_movie=movie_to_show_reviews, is_watchlist=False) # No movies to show, so return the homepage. return redirect(url_for('home_bp.home'))
def movies_by_actor(): movies_per_page = 3 actor_name = request.args.get('actor') cursor = request.args.get('cursor') movie_to_show_reviews = request.args.get('view_reviews_for') if movie_to_show_reviews is None: movie_to_show_reviews = -1 else: movie_to_show_reviews = int(movie_to_show_reviews) if cursor is None: cursor = 0 else: cursor = int(cursor) movie_ids = services.get_movie_ids_for_actor(actor_name, repo.repo_instance) movies = services.get_movies_by_id( movie_ids[cursor:cursor + movies_per_page], repo.repo_instance) first_movie_url = None last_movie_url = None next_movie_url = None prev_movie_url = None if cursor > 0: prev_movie_url = url_for('movie_bp.movies_by_actor', actor=actor_name, cursor=cursor - movies_per_page) first_movie_url = url_for('movie_bp.movies_by_actor', actor=actor_name) if cursor + movies_per_page < len(movie_ids): next_movie_url = url_for('movie_bp.movies_by_actor', actor=actor_name, cursor=cursor + movies_per_page) last_cursor = movies_per_page * int(len(movie_ids) / movies_per_page) if len(movie_ids) % movies_per_page == 0: last_cursor -= movies_per_page last_movie_url = url_for('movie_bp.movies_by_actor', actor=actor_name, cursor=last_cursor) for movie in movies: movie['view_review_url'] = url_for('movie_bp.movies_by_actor', actor=actor_name, cursor=cursor, view_reviews_for=movie['id']) movie['add_review_url'] = url_for('movie_bp.review_on_movie', movie=movie['id']) movie['add_to_watchlist_url'] = url_for('movie_bp.add_to_watchlist', movie=movie['id']) return render_template('movie/movies.html', title='Movies', movies_title='Movies featuring ' + actor_name, movies=movies, selected_movies=utilities.get_selected_movies(3), actor_urls=utilities.get_actors_and_urls(), director_urls=utilities.get_directors_and_urls(), genre_urls=utilities.get_genres_and_urls(), first_movie_url=first_movie_url, last_movie_url=last_movie_url, prev_movie_url=prev_movie_url, next_movie_url=next_movie_url, show_reviews_for_movie=movie_to_show_reviews, is_watchlist=False)
def movies_by_id(): # Read query parameters. target_id = request.args.get('id') movie_to_show_reviews = request.args.get('view_reviews_for') first_movie = services.get_first_movie(repo.repo_instance) last_movie = services.get_last_movie(repo.repo_instance) if target_id is None: target_id = first_movie['id'] else: target_id = int(target_id) if movie_to_show_reviews is None: movie_to_show_reviews = -1 else: movie_to_show_reviews = int(movie_to_show_reviews) movies, previous_id, next_id = services.get_top_movies( target_id, repo.repo_instance) first_movie_url = None last_movie_url = None next_movie_url = None prev_movie_url = None if len(movies) > 0: if previous_id is not None: prev_movie_url = url_for('movie_bp.movies_by_id', id=previous_id) first_movie_url = url_for('movie_bp.movies_by_id', id=first_movie['id']) if next_id is not None: next_movie_url = url_for('movie_bp.movies_by_id', id=next_id) last_movie_url = url_for('movie_bp.movies_by_id', id=last_movie['id']) for movie in movies: movie['view_review_url'] = url_for('movie_bp.movies_by_id', id=target_id, view_reviews_for=movie['id']) movie['add_review_url'] = url_for('movie_bp.review_on_movie', movie=movie['id']) movie['add_to_watchlist_url'] = url_for( 'movie_bp.add_to_watchlist', movie=movie['id']) return render_template( 'movie/movies.html', title='Movies', movies_title="Ranked: " + str(target_id), movies=movies, selected_movies=utilities.get_selected_movies(3), actor_urls=utilities.get_actors_and_urls(), director_urls=utilities.get_directors_and_urls(), genre_urls=utilities.get_genres_and_urls(), first_movie_url=first_movie_url, last_movie_url=last_movie_url, prev_movie_url=prev_movie_url, next_movie_url=next_movie_url, show_reviews_for_movie=movie_to_show_reviews, is_watchlist=False) # No movies to show, so return the homepage. return redirect(url_for('home_bp.home'))