Пример #1
0
def test_get_movies_by_multiple_id(in_memory_repo):
    target_movie_ids = [5, 6, 9990, 88888]
    movies_as_dict = movie_library_services.get_movies_by_id(target_movie_ids, in_memory_repo)

    assert len(movies_as_dict) == 2

    movie_ids = [movie['id'] for movie in movies_as_dict]
    assert set([5, 6]).issubset(movie_ids)
Пример #2
0
def test_get_movies_by_multiple_id(in_memory_repo):
    target_movie_ids = [5, 6, 9990, 88888]
    movies_as_dict = movie_library_services.get_movies_by_id(
        target_movie_ids, in_memory_repo)

    # Check that 2 movies were returned from the query.
    assert len(movies_as_dict) == 2

    # Check that the movie ids returned were 5 and 6.
    movie_ids = [movie['id'] for movie in movies_as_dict]
    assert set([5, 6]).issubset(movie_ids)
Пример #3
0
def movies_by_director():
    movies_per_page = 3

    # Read query parameters.
    director_name = request.args.get('director')
    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 movie ids for movies that have director_name.
    movie_ids = services.get_movie_ids_for_director(director_name,
                                                    repo.repo_instance)

    # Retrieve the batch of movies to display on the Web page.
    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:
        # There are preceding movies, so generate URLs for the 'previous' and 'first' navigation buttons.
        prev_movie_url = url_for('movie_library_bp.movies_by_director',
                                 director=director_name,
                                 cursor=cursor - movies_per_page)
        first_movie_url = url_for('movie_library_bp.movies_by_director',
                                  director=director_name)

    if cursor + movies_per_page < len(movie_ids):
        # There are further movies, so generate URLs for the 'next' and 'last' navigation buttons.
        next_movie_url = url_for('movie_library_bp.movies_by_director',
                                 director=director_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_library_bp.movies_by_director',
                                 director=director_name,
                                 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.movies_by_director',
            director=director_name,
            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'])
    # Generate the webpage to display the movies.
    return render_template('movie_library/movies.html',
                           title='Movies',
                           movies_title='Movies directed by ' + director_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)