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)
def get_movies_by_page(page, 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) movies = repo.get_movie_by_page(page) movies_dto = list() prev_page = next_page = None if len(movies) > 0: prev_page = repo.get_page_of_previous_movie(movies[0]) next_page = repo.get_page_of_next_movie(movies[0]) # Convert Articles to dictionary form. movies_dto = movies_to_dict(movies) return movies_dto, prev_page, next_page
def get_movie(id: int, repo: AbstractRepository): movie = repo.get_movie(id) if movie is None: raise NonExistentArticleException return movie_to_dict(movie)
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
def get_genre_names(repo: AbstractRepository): genres = repo.get_genre() genre_names = [genre.genre_name for genre in genres] return genre_names
def get_last_movie(repo: AbstractRepository): movie = repo.get_last_movie() return movie_to_dict(movie)
def get_user(username: str, repo: AbstractRepository): user = repo.get_user(username) if user is None: raise UnknownUserException return user_to_dict(user)