128 lines
4.2 KiB
Python
128 lines
4.2 KiB
Python
import flask
|
|
from flask import render_template, redirect, url_for, flash
|
|
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
|
|
|
|
import moviedb_func
|
|
|
|
app = flask.Flask(__name__)
|
|
app.secret_key = "Start1234!"
|
|
|
|
login_manager = LoginManager()
|
|
login_manager.init_app(app)
|
|
login_manager.login_view = "login"
|
|
|
|
@login_manager.user_loader
|
|
def load_user(user_id):
|
|
return moviedb_func.get_user_by_id(user_id)
|
|
|
|
@app.route("/register", methods=["GET", "POST"])
|
|
def register():
|
|
if flask.request.method == "POST":
|
|
username = flask.request.form.get("username")
|
|
password = flask.request.form.get("password")
|
|
if moviedb_func.get_user_by_username(username):
|
|
flash("Benutzername existiert bereits")
|
|
return redirect(url_for("register"))
|
|
moviedb_func.add_user(username, password)
|
|
return redirect(url_for("login"))
|
|
return render_template("register.html")
|
|
|
|
@app.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
if flask.request.method == "POST":
|
|
username = flask.request.form.get("username")
|
|
password = flask.request.form.get("password")
|
|
user = moviedb_func.get_user_by_username(username)
|
|
if user and user.check_password(password):
|
|
login_user(user)
|
|
return redirect(url_for("index"))
|
|
flash("Ungültiger Benutzername oder Passwort")
|
|
return render_template("login.html")
|
|
|
|
@app.route("/logout")
|
|
@login_required
|
|
def logout():
|
|
logout_user()
|
|
return redirect(url_for("login"))
|
|
|
|
|
|
@app.route("/", methods=["GET", "POST"])
|
|
@login_required
|
|
def index():
|
|
page = flask.request.args.get('page', 1, type=int)
|
|
per_page = 20
|
|
search_query = None
|
|
if flask.request.method == "POST":
|
|
search_query = flask.request.form.get("search")
|
|
else:
|
|
search_query = flask.request.args.get("search")
|
|
|
|
data_all, total_pages = moviedb_func.show_movie_list(user_id=current_user.id, search_query=search_query, page=page, per_page=per_page)
|
|
return render_template(
|
|
"index.html",
|
|
sitename="Meine Movieliste !!!",
|
|
data_all=data_all,
|
|
total_pages=total_pages,
|
|
current_page=page,
|
|
search_query=search_query
|
|
)
|
|
|
|
|
|
@app.get("/add_movie")
|
|
def add_movie():
|
|
return render_template(
|
|
"add_movie.html",
|
|
sitename="Meine Movieliste !!!",
|
|
url="output",
|
|
select_movie="add_movie",
|
|
select_genre="add_genre",
|
|
select_medium="add_medium",
|
|
data=moviedb_func.all_select(),
|
|
data_medium=moviedb_func.all_select(what_select="medium")
|
|
)
|
|
|
|
|
|
@app.post("/output")
|
|
@login_required
|
|
def csv_output():
|
|
select_add_movie = flask.request.form["add_movie"]
|
|
select_medium = flask.request.form["add_medium"]
|
|
select_medium_id = moviedb_func.search_id(
|
|
search_name=select_medium, select_from="medium", select_where="medium")
|
|
|
|
if moviedb_func.scrape_and_add_movie(movie_name=select_add_movie,
|
|
medium_id=select_medium_id, user_id=current_user.id):
|
|
return redirect(url_for('index'))
|
|
else:
|
|
return redirect(url_for('add_movie_manually', movie_name=select_add_movie, medium_id=select_medium_id))
|
|
|
|
@app.get("/add_movie_manually")
|
|
@login_required
|
|
def add_movie_manually():
|
|
movie_name = flask.request.args.get('movie_name')
|
|
medium_id = flask.request.args.get('medium_id')
|
|
return render_template(
|
|
"add_movie_manually.html",
|
|
sitename="Manuelle Eingabe",
|
|
movie_name=movie_name,
|
|
medium_id=medium_id
|
|
)
|
|
|
|
@app.post("/save_manual")
|
|
@login_required
|
|
def save_manual():
|
|
movie_name = flask.request.form["movie_name"]
|
|
medium_id = flask.request.form["medium_id"]
|
|
director_name = flask.request.form["director_name"]
|
|
release_year = flask.request.form["release_year"]
|
|
genre_name = flask.request.form["genre_name"]
|
|
|
|
moviedb_func.add_manual_movie(movie_name=movie_name, medium_id=int(medium_id), director_name=director_name, release_year=int(release_year), genre_name=genre_name, user_id=current_user.id)
|
|
|
|
return redirect("/")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
moviedb_func.create_movie_database()
|
|
app.run(port=5082, host="0.0.0.0", debug=True, ssl_context=('cert.pem', 'key.pem'))
|