/
judgement.py
140 lines (119 loc) · 4.99 KB
/
judgement.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
from flask import Flask, render_template, redirect, request, url_for, flash, session
import model
app = Flask(__name__)
app.secret_key = "shhhhthisisasecret"
@app.route("/")
def index():
if session.get("id"):
user = model.getUserFromId(session["id"])
return redirect(url_for("profile", user_id =user.id))
else:
return render_template("index.html", user_id=None)
@app.route("/", methods=["POST"])
def login():
email = request.form.get("email")
password = request.form.get("password")
user_id = model.authenticate(email, password)
if user_id == None:
flash("User does not exist")
return redirect(url_for("index"))
else:
session['id'] = user_id
return redirect(url_for("profile", user_id =user_id))
@app.route("/clear")
def clear_session():
session.clear()
return redirect(url_for ("index"))
@app.route("/profile/<user_id>")
def profile(user_id):
profile_link = my_profile_link()
user = model.getUserFromId(user_id)
movie_ratings = model.get_movie_list(user_id)
if session.get('id'):
if session['id'] == int(user_id):
return render_template("profile.html", user_id=user_id, email = user.email,
movie_ratings=movie_ratings, profile_link=profile_link)
else:
return render_template("user_profile.html", user_id=user_id, email = user.email,
movie_ratings=movie_ratings, profile_link=profile_link)
else:
return render_template("user_profile.html", user_id=user_id, email = user.email,
movie_ratings=movie_ratings, profile_link=profile_link)
@app.route("/profile/<user_id>", methods=["POST"])
def add_rating(user_id):
movie_name = request.form.get("movie_name")
rating = request.form.get("rating")
if model.movie_does_not_exist(movie_name):
flash("Movie not in database")
return redirect(url_for("profile", user_id=user_id))
else:
movie_id = model.get_movieid_from_name(movie_name)
if model.user_rated_movie(movie_id, user_id):
model.change_rating(user_id, movie_id, rating)
elif movie_name == "":
flash("Please enter a movie name...")
elif rating == None:
flash("...Rating?")
else:
model.add_movie_rating(user_id, movie_id, rating)
return redirect(url_for("profile", user_id=user_id))
def my_profile_link():
if session.get('id'):
profile_link = session['id']
else:
profile_link = None
return profile_link
@app.route("/show_users/")
@app.route("/show_users/<int:page_id>")
def show_users(page_id=0):
profile_link = my_profile_link()
user_list = model.session.query(model.User).filter(model.User.id > page_id).limit(30).all()
return render_template("user_list.html", users=user_list, page_id=page_id, profile_link = profile_link)
@app.route("/movie_results", methods = ["POST"])
def show_search_results():
movie_title = request.form.get("movie_title")
movie_exist = model.movie_does_not_exist(movie_title)
if not movie_exist:
return redirect(url_for("movie_profile", movie_name= movie_title))
else:
flash ("Movie does not exist")
return redirect(url_for("show_movies"))
@app.route("/show_movies/")
@app.route("/show_movies/<int:page_id>")
def show_movies(page_id=0):
profile_link = my_profile_link()
movie_list = model.session.query(model.Movie).filter(model.Movie.id > page_id).limit(30).all()
return render_template("movie_list.html", movies=movie_list, page_id=page_id, profile_link = profile_link)
@app.route("/movie_title/<movie_name>")
def movie_profile(movie_name):
profile_link = my_profile_link()
user_ratings = model.get_users_ratings(movie_name)
if session.get('id'):
id = session['id']
else:
id = None
avg_rating, rating, prediction, beratement = model.get_movie_prediction(id, movie_name)
return render_template("movie_profile.html", profile_link=profile_link, user_ratings=user_ratings,
movie_name=movie_name, average=avg_rating, rating=rating, prediction=prediction,
beratement = beratement)
@app.route("/register")
def register():
return render_template("register.html")
@app.route("/register", methods=["POST"])
def make_new_user():
email = request.form.get("email")
age = request.form.get("age")
zipcode = request.form.get("zipcode")
password = request.form.get("password")
verify_password = request.form.get("password_verify")
if password != verify_password:
flash("Passwords do not match")
return redirect(url_for("register"))
if model.userExists(email):
flash("Account already exists for user email")
return redirect(url_for("register"))
model.make_new_user(email, password, age, zipcode)
flash("You've successfully made an account!")
return redirect(url_for("index"))
if __name__ == "__main__":
app.run(debug = True)