def movies_by_first_letter(): """ """ character = request.args.get('character') search_form = utils.MovieSearchForm() if character: movies = services.get_movies_by_first_letter(character, repo.repo_instance) for movie in movies: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) return render_template('browse/browse-movies.html', title=f"Movies Starting With: {character}", watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies( movies, utils.get_user_watchlist()), search_form=search_form) else: letters = services.get_all_movie_first_letter(repo.repo_instance) letter_urls = [] for letter in letters: letter_urls.append( dict(letter=letter, url=url_for('.movies_by_first_letter', character=letter))) letter_urls.insert(0, dict(letter="All Movies", url=url_for('.movies'))) return render_template( 'browse/browse-a-z.html', title="Movies A-Z", a_to_z=letter_urls, search_form=search_form, )
def actor(): """ """ search_form = utils.MovieSearchForm() fullname = request.args.get('fullname') if fullname: try: movie_data, collegues = services.get_movies_by_actor( fullname, repo.repo_instance) for movie in movie_data: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) for collegue in collegues: collegue['url'] = url_for('.actor', fullname=collegue['fullname']) return render_template( 'person/person.html', title="Actor", fullname=fullname, watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies(movie_data, utils.get_user_watchlist()), collegues=collegues, search_form=search_form, ) except services.PersonException: return redirect(url_for('home_bp.home')) else: return redirect(url_for('home_bp.home'))
def genre(): """ """ search_form = utils.MovieSearchForm() genre = request.args.get('genre') if genre: try: movie_data = services.get_movies_by_genre(genre, repo.repo_instance) for movie in movie_data: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) movie_data.sort(key=lambda x: x['rank']) return render_template( 'genre/genre.html', title=genre, watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies(movie_data, utils.get_user_watchlist()), search_form=search_form, ) except services.UnknownGenreException: return redirect(url_for('home_bp.home')) return redirect(url_for('home_bp.home')) else: return redirect(url_for('home_bp.home'))
def review_movie(): """ """ username = session['username'] review_form = ReviewForm() search_form = utils.MovieSearchForm() if review_form.validate_on_submit(): year = review_form.movie_year.data title = review_form.movie_title.data services.add_review(title, year, review_form.review.data, username, review_form.rating.data, repo.repo_instance) return redirect(url_for('movie_bp.movie', title=title, year=year)) if request.method == 'GET': title = request.args.get('movie_title') year = request.args.get('movie_year') review_form.movie_year.data = year review_form.movie_title.data = title else: title = review_form.movie_title.data year = review_form.movie_year.data try: movie = services.get_movie(title, year, repo.repo_instance) return render_template('movie/review_movie.html', movie_title=movie['title'], movie_year=movie['year'], review_form=review_form, search_form=search_form, handler_url=url_for('movie_bp.review_movie')) except: return redirect(url_for('movie_bp.movie', title=title, year=year))
def login(): """ """ auth_form = LoginForm() search_form = utils.MovieSearchForm() username_not_recognised = None password_doesnt_match = None if auth_form.validate_on_submit(): try: user = services.get_user(auth_form.username.data, repo.repo_instance) services.authenticate_user(user['username'], auth_form.password.data, repo.repo_instance) session.clear() session['username'] = user['username'] return redirect(url_for('home_bp.home')) except services.UnknownUserException: username_not_recognised = "Username not recognised- please try another" except services.AuthenticationException: password_doesnt_match = 'Password does not match username. Please examine your credentials and try again' return render_template( 'authentication/credentials.html', title='Login', username_error_message=username_not_recognised, password_error_message=password_doesnt_match, auth_form=auth_form, search_form=search_form, )
def register(): """ """ auth_form = RegistrationForm() search_form = utils.MovieSearchForm() username_unique = None if auth_form.validate_on_submit(): try: services.add_user(auth_form.username.data, auth_form.password.data, repo.repo_instance) return redirect(url_for('authentication_bp.login')) except services.NameNotUnqiueException: username_unique = "Username is already used, please try another one" return render_template( 'authentication/credentials.html', title='Register', auth_form=auth_form, username_error_message=username_unique, handler_url=url_for('authentication_bp.register'), search_form=search_form) return render_template('authentication/credentials.html', title='Register', auth_form=auth_form, username_error_message=username_unique, handler_url=url_for('authentication_bp.register'), search_form=search_form)
def actors_by_initial(): """ """ search_form = utils.MovieSearchForm() character = request.args.get('character') if character: actors = services.get_actors_by_first_letter(character, repo.repo_instance) for actor in actors: actor['url'] = url_for('person_bp.actor', fullname=actor['name']) return render_template( 'browse/browse.html', title=f"Actors Starting With: {character}", data=actors, search_form=search_form, ) else: letters = services.get_all_actor_first_letter(repo.repo_instance) letter_urls = [] for letter in letters: letter_urls.append( dict(letter=letter, url=url_for('.actors_by_initial', character=letter))) letter_urls.insert(0, dict(letter="All Actors", url=url_for('.actors'))) return render_template('browse/browse-a-z.html', title="Actors A-Z", a_to_z=letter_urls, search_form=search_form)
def profile(): """ """ profile = services.get_user(session['username'], repo.repo_instance) if profile: return render_template('profile/profile.html', profile=profile, title="Profile", search_form=utils.MovieSearchForm()) else: return redirect(url_for('home_bp.home'))
def watchlist(): """ """ return render_template( 'watchlist/watchlist.html', title='Watchlist', watchlist=utils.get_user_watchlist(), search_form=utils.MovieSearchForm(), )
def actors(): """ """ search_form = utils.MovieSearchForm() actors = services.get_actors(repo.repo_instance) for actor in actors: actor['url'] = url_for('person_bp.actor', fullname=actor['name']) return render_template( 'browse/browse.html', title="All Actors", data=actors, search_form=search_form, )
def genres(): """ """ genres = services.get_genres(repo.repo_instance) search_form = utils.MovieSearchForm() for genre in genres: genre['url'] = url_for('genre_bp.genre', genre=genre['name']) return render_template( 'browse/browse.html', title='Genres', data=genres, search_form=search_form, )
def directors(): """ """ search_form = utils.MovieSearchForm() directors = services.get_directors(repo.repo_instance) for director in directors: director['url'] = url_for('person_bp.director', fullname=director['name']) return render_template( 'browse/browse.html', title="All Directors", data=directors, search_form=search_form, )
def movies(): """ """ search_form = utils.MovieSearchForm() movies = services.get_movies(repo.repo_instance) for movie in movies: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) return render_template('browse/browse-movies.html', title='All Movies By Rank', watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies( movies, utils.get_user_watchlist()), search_form=search_form)
def search(): """ """ search_form = utils.MovieSearchForm(request.form) search_form.actors.choices = services.get_actors(repo.repo_instance) search_form.director.choices = services.get_directors(repo.repo_instance) search_form.genres.choices = services.get_genres(repo.repo_instance) if request.method == 'POST': if search_form.validate_on_submit(): return search_results(search_form) else: return redirect(url_for('.search', )) else: request.form = search_form return render_template('search/search.html', search_form=search_form, title="Search")
def home(): """ """ search_form = utils.MovieSearchForm() movies = services.get_top_100movies(repo.repo_instance) for movie in movies: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) return render_template( 'home/home.html', title='Home', watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies(movies, utils.get_user_watchlist()), search_form=search_form, )
def movie(): """ """ title = request.args.get('title') year = request.args.get('year') search_form = utils.MovieSearchForm() try: movie_data = services.get_movie(title, year, repo.repo_instance) movie_data['add_review_url'] = url_for('movie_bp.review_movie', movie_title=movie_data['title'], movie_year=movie_data['year']) return render_template( 'movie/movie.html', title="Movie", movie=utils.get_added_movies([movie_data], utils.get_user_watchlist())[0], search_form=search_form, ) except services.UnknownMovieException: return redirect(url_for('home_bp.home')) return redirect(url_for('home_bp.home'))
def director(): """ """ search_form = utils.MovieSearchForm() fullname = request.args.get('fullname') if fullname is not None: try: movie_data = services.get_movies_by_director( fullname, repo.repo_instance) for movie in movie_data: movie['url'] = url_for('movie_bp.movie', title=movie['title'], year=movie['year']) return render_template('person/person.html', title="Director", fullname=fullname, watchlist=utils.get_user_watchlist(), movies=utils.get_added_movies( movie_data, utils.get_user_watchlist()), search_form=search_form) except ValueError: return render_template(redirect(url_for('home_bp.home'))) return render_template(redirect(url_for('home_bp.home')))