コード例 #1
0
def add_director_review(user_name: str, director_name: str, review_text: str,
                        repo: AbstractRepository):
    director = repo.get_director(director_name)
    user = repo.get_user(user_name)
    if user is None:
        raise UnknownUserException
    review = make_director_review(user, director, review_text)
    repo.add_director_review(review)
コード例 #2
0
def add_user(user_name, password, repo: AbstractRepository):
    user = repo.get_user(user_name.lower())
    if user is not None:
        raise NameNotUniqueException

    password_hash = generate_password_hash(password)

    user = User(user_name, password_hash)
    repo.add_user(user)
コード例 #3
0
def get_search_info(name, repo: AbstractRepository):
    movies = repo.get_movies_for_actor(name)
    movies += repo.get_movies(name)
    movies += repo.get_movies_for_genre(name)
    movies += repo.get_movies_for_director(name)
    movies = set(movies)
    movies = list(movies)
    movies.sort(key=lambda movie: movie.rating, reverse=True)
    return movies_to_dict(movies)
コード例 #4
0
def get_random_movies(quantity, repo: AbstractRepository):
    movie_count = repo.get_number_of_movie()
    if quantity >= movie_count:
        quantity = movie_count - 1

    random_ids = random.sample(range(1, movie_count), quantity)
    movies = repo.get_movies_by_id(random_ids)

    return movies_to_dict(movies)
コード例 #5
0
def remove_from_watch_list(movie_id, username, repo: AbstractRepository):
    # Check that the movie exists.
    movie = repo.get_movie(int(movie_id))
    if movie is None:
        raise NonExistentMovieException
    user = repo.get_user(username)
    if user is None:
        raise UnknownUserException
    repo.remove_from_watch_list(user, movie)
コード例 #6
0
def get_movies_in_rank(quantity, repo: AbstractRepository):
    movie_size = repo.get_number_of_movies()

    if quantity >= movie_size:
        quantity = movie_size - 1

    rank_list = [i for i in range(1, quantity + 1)]
    movies = repo.get_movies_by_rank(rank_list)

    return movies_to_dict(movies)
コード例 #7
0
def add_to_watch_list(movie_id: int, username: str, repo: AbstractRepository):
    # Check that the movie exists.
    movie = repo.get_movie(int(movie_id))
    if movie is None:
        raise NonExistentMovieException

    user = repo.get_user(username)
    if user is None:
        raise UnknownUserException
    if movie not in user.watch_list:
        repo.add_to_watch_list(user, movie)
コード例 #8
0
ファイル: services.py プロジェクト: jane214/compsci-235-A2
def get_random_movies(quantity, repo: AbstractRepository):
    movie_count = repo.get_number_of_movies()

    if quantity >= movie_count:
        # Reduce the quantity of ids to generate if the repository has an insufficient number of articles.
        quantity = movie_count - 1

    # Pick distinct and random articles.
    random_ids = random.sample(range(1, movie_count), quantity)
    movies = repo.get_movies_by_id(random_ids)

    return movies_to_dict(movies)
コード例 #9
0
def add_user(username: str, password: str, repo: AbstractRepository):
    # Check that the given username is available.
    user = repo.get_user(username)
    if user is not None:
        raise NameNotUniqueException

    # Encrypt password so that the database doesn't store passwords 'in the clear'.
    password_hash = generate_password_hash(password)

    # Create and store the new User, with password encrypted.
    user = User(username, password_hash)
    repo.add_user(user)
コード例 #10
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_movies_by_release_year(year, repo: AbstractRepository):
    movies = repo.get_movies_by_release_year(target_year=year)

    prev_year = next_year = None
    if len(movies) > 0:
        prev_year = repo.get_release_year_of_previous_movie(movies[0])
        next_year = repo.get_release_year_of_next_movie(movies[0])

        # Convert Movies to dictionary form.
        movies = movies_to_dict(movies)

    return movies, prev_year, next_year
コード例 #11
0
def get_movies_by_year(year, repo: AbstractRepository):
    movies = repo.get_movies_by_year(target_year=year)

    movies_dto = list()
    prev_year = next_year = None

    if len(movies) > 0:
        prev_year = repo.get_year_of_previous_movie(movies[0])  #可能要改
        next_year = repo.get_year_of_next_movie(movies[0])

        movies_dto = movies_to_dict(movies)

    return movies_dto, prev_year, next_year
コード例 #12
0
def add_review(user_name: str, movie_id: int, review_text: str,
               repo: AbstractRepository):
    movie = repo.get_movie_by_id(int(movie_id))

    if movie is None:
        raise NonExistentMovieException

    user = repo.get_user(user_name)
    if user is None:
        raise UnknownUserException

    review = make_review(user, movie, review_text)

    repo.add_review(review)
コード例 #13
0
def add_comment(movie_id: int, comment_text: str, username: str, repo: AbstractRepository):
    # Check that the movie exists.
    movie = repo.get_movie(int(movie_id))
    if movie is None:
        raise NonExistentMovieException

    user = repo.get_user(username)
    if user is None:
        raise UnknownUserException

    # Create comment.
    comment = make_review(comment_text, user, movie)

    # Update the repository.
    repo.add_comment(comment)
コード例 #14
0
def add_review(movie_rank: int, review_text: str, rating: int, username: str, repo: AbstractRepository):
    # Check that the movie exists.
    movie = repo.get_movie(movie_rank)
    if movie is None:
        raise NonExistentMovieException

    user = repo.get_user(username)
    if user is None:
        raise UnknownUserException

    # Create review.
    review = make_review(review_text, user, movie, rating)

    # Update the repository.
    repo.add_review(review)
コード例 #15
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_reviews_for_movie(movie_id, repo: AbstractRepository):
    movie = repo.get_movie_by_id(movie_id)

    if movie is None:
        raise NonExistentException

    return reviews_to_dict(movie.reviews)
コード例 #16
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_movies_by_id(id_list, repo: AbstractRepository):
    movies = repo.get_movies_by_id(id_list)

    # Convert Movies to dictionary form
    movies_as_dict = movies_to_dict(movies)

    return movies_as_dict
コード例 #17
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_movie(movie_id: int, repo: AbstractRepository):
    movie = repo.get_movie_by_id(movie_id)

    if movie is None:
        raise NonExistentException

    return movie_to_dict(movie)
コード例 #18
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def search_movie_by_title(title:str, repo:AbstractRepository):
    movies = repo.search_movie_by_title(title)
    if len(movies) == 0:
        raise NonExistentException

    movies_as_dict = movies_to_dict(movies)
    return movies_as_dict
コード例 #19
0
def get_movies_by_name(name, repo: AbstractRepository):
    movie = repo.get_movies_by_name(name)
    # if len(movie) == 0:
    #     raise NonExistentMovieException
    # else:
    #     return movies_to_dict(movie)
    return movies_to_dict(movie)
コード例 #20
0
def get_movie(rank: int, repo: AbstractRepository):
    movie = repo.get_movie(rank)

    if movie is None:
        raise NonExistentMovieException

    return movie_to_dict(movie)
コード例 #21
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_comments_for_article(article_id, repo: AbstractRepository):
    article = repo.get_article(article_id)

    if article is None:
        raise NonExistentArticleException

    return comments_to_dict(article.comments)
コード例 #22
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_articles_by_id(id_list, repo: AbstractRepository):
    articles = repo.get_articles_by_id(id_list)

    # Convert Articles to dictionary form.
    articles_as_dict = articles_to_dict(articles)

    return articles_as_dict
コード例 #23
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def add_review(review_text: str, username: str, movie_id: int, rating: int, repo: AbstractRepository):
    # Check that the movie exists.
    movie = repo.get_movie_by_id(movie_id)
    if movie is None:
        raise NonExistentException

    # Check that the user exists
    user = repo.get_user(username)
    if user is None:
        raise UnknownUserException

    # Create review
    review = make_review(review_text=review_text, user=user, movie=movie, rating=rating)

    # Update the repository
    repo.add_review(review)
コード例 #24
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_articles_by_date(date, repo: AbstractRepository):
    # Returns articles for the target date (empty if no matches), the date of the previous article (might be null), the date of the next article (might be null)

    articles = repo.get_articles_by_date(target_date=date)

    articles_dto = list()
    prev_date = next_date = None

    if len(articles) > 0:
        prev_date = repo.get_date_of_previous_article(articles[0])
        next_date = repo.get_date_of_next_article(articles[0])

        # Convert Articles to dictionary form.
        articles_dto = articles_to_dict(articles)

    return articles_dto, prev_date, next_date
コード例 #25
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_article(article_id: int, repo: AbstractRepository):
    article = repo.get_article(article_id)

    if article is None:
        raise NonExistentArticleException

    return article_to_dict(article)
コード例 #26
0
def authenticate_user(username: str, password: str, repo: AbstractRepository):
    authenticated = False

    user = repo.get_user(username)
    if user is not None:
        authenticated = check_password_hash(user.password, password)
    if not authenticated:
        raise AuthenticationException
コード例 #27
0
def get_movies_by_year(year, repo: AbstractRepository):
    # Returns Movies for the target year (empty if no matches), the year of the previous movie (might be null),
    # the date of the next movie (might be null)

    movies = repo.get_movies_by_year(target_year=int(year))
    movies.sort(key=lambda movie: movie.rating, reverse=True)
    movies_dto = list()
    prev_year = next_year = None

    if len(movies) > 0:
        prev_year = repo.get_year_of_previous_movie(movies[0])
        next_year = repo.get_year_of_next_movie(movies[0])

        # Convert Movies to dictionary form.
        movies_dto = movies_to_dict(movies)

    return movies_dto, prev_year, next_year
コード例 #28
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def search_movie_by_actor_fullname(actor_fullname: str, repo: AbstractRepository):

    movies = repo.get_movies_by_actor(actor_fullname=actor_fullname)
    if len(movies) == 0:
        raise NonExistentException

    movies_as_dict = movies_to_dict(movies)
    return movies_as_dict
コード例 #29
0
def get_movies_by_year(year, repo: AbstractRepository):
    # Returns movies for the target year (empty if no matches), the date of the previous article (might be null), the date of the next article (might be null)
    movies = repo.get_movie_with_given_year(year)

    movies_dto = list()
    #prev_date = next_date = None

    if len(movies) > 0:
        #prev_date = repo.get_date_of_previous_article(articles[0])
        #next_date = repo.get_date_of_next_article(articles[0])

        # Convert Articles to dictionary form.
        movies_name = list()
        for movie_rank in movies:
            movies_name.append(repo.get_movie(movie_rank))
        movies_dto = movies_to_dict(movies_name)

    return movies_dto
コード例 #30
0
ファイル: services.py プロジェクト: KCS-Fate/Movie_Web_App
def get_article_ids_for_tag(tag_name, repo: AbstractRepository):
    article_ids = repo.get_article_ids_for_tag(tag_name)
    return article_ids