/
views.py
115 lines (103 loc) · 3.86 KB
/
views.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
from datetime import datetime
from flask_login import LoginManager, login_user, current_user, logout_user, login_required
from flask import abort, current_app, render_template, Flask, stream_with_context, request, Response, flash, render_template, redirect, url_for
from movie import Movie
from forms import MovieEditForm, LoginForm
from passlib.hash import pbkdf2_sha256 as hasher
from user import get_user
def login_page():
form = LoginForm()
if form.validate_on_submit():
username = form.data["username"]
user = get_user(username)
if user is not None:
password = form.data["password"]
if hasher.verify(password, user.password):
login_user(user)
flash("Giriş başarılı.")
next_page = request.args.get("next", url_for("home_page"))
return redirect(next_page)
flash("Invalid credentials.")
x = datetime.now()
date = x.strftime("%x")
day_name = x.strftime("%A")
time = x.strftime("%X")
return render_template("login.html", form=form, date = date, day_name = day_name, time = time)
def logout_page():
logout_user()
flash("You have logged out.")
return redirect(url_for("home_page"))
def home_page():
x = datetime.now()
date = x.strftime("%x")
day_name = x.strftime("%A")
time = x.strftime("%X")
return render_template("home.html", date = date, day_name = day_name, time = time)
def movies_page():
db = current_app.config["db"]
if request.method == "GET":
movies = db.get_movies()
return render_template("movies.html", movies=sorted(movies))
else:
if not current_user.is_admin:
abort(401)
form_movie_keys = request.form.getlist("movie_keys")
for form_movie_key in form_movie_keys:
db.delete_movie(int(form_movie_key))
flash("%(num)d movies deleted." % {"num": len(form_movie_keys)})
return redirect(url_for("movies_page"))
def movie_page(movie_key):
db = current_app.config["db"]
movie = db.get_movie(movie_key)
if movie is None:
abort(404)
return render_template("movie.html", movie=movie)
@login_required
def movie_add_page():
if not current_user.is_admin:
abort(401)
form = MovieEditForm()
if form.validate_on_submit():
title = form.data["title"]
year = form.data["year"]
movie = Movie(title, year=year)
db = current_app.config["db"]
movie_key = db.add_movie(movie)
flash("Exam added.")
return redirect(url_for("movie_page", movie_key=movie_key))
return render_template("movie_edit.html", form=form)
@login_required
def movie_edit_page(movie_key):
db = current_app.config["db"]
movie = db.get_movie(movie_key)
form = MovieEditForm()
if form.validate_on_submit():
title = form.data["title"]
year = form.data["year"]
movie = Movie(title, year=year)
db.update_movie(movie_key, movie)
flash("Exam updated.")
return redirect(url_for("movie_page", movie_key=movie_key))
form.title.data = movie.title
form.year.data = movie.year if movie.year else ""
return render_template("movie_edit.html", form=form)
def validate_movie_form(form):
form.data = {}
form.errors = {}
form_title = form.get("title", "").strip()
if len(form_title) == 0:
form.errors["title"] = "Title can not be blank."
else:
form.data["title"] = form_title
form_year = form.get("year")
if not form_year:
form.data["year"] = None
elif not form_year.isdigit():
form.errors["year"] = "Year must consist of digits only."
else:
year = int(form_year)
if (year < 1887) or (year > datetime.now().year):
form.errors["year"] = "Year not in valid range."
else:
form.data["year"] = year
return len(form.errors) == 0