-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflask_app.py
123 lines (90 loc) · 3.13 KB
/
flask_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
# Home_Page - flask home page for personal use 2017
# has login, out comments.
from datetime import datetime
from flask import Flask, redirect, render_template, request, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_login import login_user, LoginManager, UserMixin, logout_user, login_required, current_user
from werkzeug.security import check_password_hash
from flask_migrate import Migrate
app = Flask(__name__)
app.config["DEBUG"] = True
SQLALCHEMY_DATABASE_URI = "
username="
password="
hostname=",
databasename="
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
migrate = Migrate(app, db)
app.secret_key = "
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin, db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(128))
password_hash = db.Column(db.String(128))
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def get_id(self):
return self.username
@login_manager.user_loader
def load_user(user_id):
return User.query.filter_by(username=user_id).first()
class Comment(db.Model):
__tablename__ = "comments"
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(4096))
posted = db.Column(db.DateTime, default=datetime.now)
commenter_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
commenter = db.relationship('User', foreign_keys=commenter_id)
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "GET":
return render_template("main_page.html", comments=Comment.query.all())
if not current_user.is_authenticated:
return redirect(url_for('index'))
comment = Comment(content=request.form["contents"], commenter=current_user)
db.session.add(comment)
db.session.commit()
return redirect (url_for('index'))
@app.route('/page_test')
def page_test():
return render_template('page_test.html')
@app.route('/links')
def links():
return render_template('links.html')
@app.route('/wifi')
def wifi():
return render_template('wifi.html')
@app.route('/data')
def data():
return render_template('bills.html')
@app.route('/bills')
def bills():
return render_template('bills.html')
@app.route('/robo')
def robo():
return render_template('robo.html')
@app.route('/xmpp')
def xmpp():
return render_template('xmpp.html')
@app.route("/login/", methods=["GET", "POST"])
def login():
if request.method == "GET":
return render_template("login_page.html", error=False)
user = load_user(request.form["username"])
if user is None:
return render_template("login_page.html", error=True)
if not user.check_password(request.form["password"]):
return render_template("login_page.html", error=True)
login_user(user)
return redirect(url_for('index'))
@app.route("/logout/")
@login_required
def logout():
logout_user()
return redirect(url_for('index'))