-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
128 lines (111 loc) · 4.13 KB
/
app.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
from flask import request, redirect, Flask, render_template, session
from flask_debugtoolbar import DebugToolbarExtension
from models import User, Feedback, db, connect_db
from forms import RegisterForm, LoginForm, FeedbackForm
app = Flask(__name__)
app.config['SECRET_KEY'] = "secret"
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres:///flask-feedback'
app.config['SQLALCHEMY_ECHO'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
toolbar=DebugToolbarExtension(app)
connect_db(app)
db.create_all()
@app.route('/')
def home():
return redirect('/register')
@app.route('/register', methods = ['GET', 'POST'])
def register():
form = RegisterForm()
if form.validate_on_submit():
username = form.username.data
password = form.passward.data
first_name = form.first_name.data
last_name = form.last_name.data
email = form.email.data
user = User.register(username, password, first_name, last_name, email)
#db.session.add(user)
session['username'] = user.username
db.session.commit()
return redirect(f'/users/{username}')
else:
return render_template('users/register.html',form = form)
@app.route('/login', methods = ['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
username = form.username.data
password = form.passward.data
user = User.authenticate(username, password)
if user:
session['username'] = user.username
return redirect(f'/users/{username}')
else:
return render_template('users/login.html',form = form)
else:
return render_template('users/login.html',form = form)
@app.route('/users/<username>')
def show(username):
if (session.get('username')==username):
user = User.query.filter_by(username=username).first()
return render_template('users/show.html', user = user)
else:
return redirect('/login')
@app.route('/logout')
def logout():
session.pop('username')
return redirect('/login')
@app.route('/users/<username>/delete', methods = ['POST'])
def delete_user(username):
if username == session.get('username'):
user = User.query.filter_by(username = username).first()
db.session.delete(user)
db.session.commit()
session.pop('username')
return redirect('/')
@app.route('/users/<username>/feedback/add', methods = ['GET', 'POST'])
def add_feedback(username):
if session.get('username')==username:
form = FeedbackForm()
if form.validate_on_submit():
title = form.title.data
content = form.content.data
feedback = Feedback(
title = title,
content = content,
username = username
)
db.session.add(feedback)
db.session.commit()
return redirect(f'/users/{username}')
else:
return render_template('feedback/new.html', form = form)
else:
return redirect('/')
@app.route('/feedback/<int:feedback_id>/update', methods = ['GET', 'POST'])
def update_feedback(feedback_id):
feedback = Feedback.query.get_or_404(feedback_id)
if session.get('username')!=feedback.username:
return redirect('/')
form = FeedbackForm()
if form.validate_on_submit():
title = form.title.data
content = form.content.data
feedback.title = title
feedback.content = content
db.session.add(feedback)
db.session.commit()
return redirect(f'/users/{feedback.username}')
else:
form.title.data = feedback.title
form.content.data = feedback.content
return render_template('feedback/edit.html', form = form)
@app.route('/feedback/<int:feedback_id>/delete', methods = ['POST'])
def delete_feedback(feedback_id):
feedback = Feedback.query.get_or_404(feedback_id)
if feedback.username == session.get('username'):
db.session.delete(feedback)
db.session.commit()
return redirect(f'/users/{feedback.username}')
else:
return redirect('/login')