-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathexample.py
More file actions
122 lines (96 loc) · 2.59 KB
/
example.py
File metadata and controls
122 lines (96 loc) · 2.59 KB
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
import os
import psycopg2
from flask import (
Flask,
flash,
get_flashed_messages,
redirect,
render_template,
request,
url_for,
)
from user_repository import UserRepository
app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
app.config["DATABASE_URL"] = os.getenv("DATABASE_URL")
conn = psycopg2.connect(app.config["DATABASE_URL"])
repo = UserRepository(conn)
@app.route("/")
def index():
return render_template("home.html")
@app.route("/users/")
def users_get():
messages = get_flashed_messages(with_categories=True)
term = request.args.get("term", "")
if term:
users = repo.get_by_term(term)
else:
users = repo.get_content()
return render_template(
"users/index.html", users=users, search=term, messages=messages
)
@app.post("/users")
def users_post():
user_data = request.form.to_dict()
errors = validate(user_data)
if errors:
return render_template(
"users/new.html",
user=user_data,
errors=errors,
)
repo.save(user_data)
flash("Пользователь успешно добавлен", "success")
return redirect(url_for("users_get"), code=302)
@app.route("/users/new")
def users_new():
user = {"name": "", "email": ""}
errors = {}
return render_template(
"users/new.html",
user=user,
errors=errors,
)
@app.route("/users/<id>/edit")
def users_edit(id):
user = repo.find(id)
errors = {}
return render_template(
"users/edit.html",
user=user,
errors=errors,
)
@app.route("/users/<id>/patch", methods=["POST"])
def users_patch(id):
user = repo.find(id)
data = request.form.to_dict()
errors = validate(data)
if errors:
return render_template(
"users/edit.html",
user=user,
errors=errors,
), 422
data["id"] = user["id"]
repo.save(data)
flash("Пользователь успешно обновлен", "success")
return redirect(url_for("users_get"))
@app.route("/users/<id>/delete", methods=["POST"])
def users_delete(id):
repo.destroy(id)
flash("Пользователь удален", "success")
return redirect(url_for("users_get"))
@app.route("/users/<id>")
def users_show(id):
user = repo.find(id)
return render_template(
"users/show.html",
user=user,
)
def validate(user):
errors = {}
if not user["name"]:
errors["name"] = "Can't be blank"
if not user["email"]:
errors["email"] = "Can't be blank"
return errors