-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
112 lines (93 loc) · 3.65 KB
/
app.py
File metadata and controls
112 lines (93 loc) · 3.65 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
from flask import Flask, render_template, request, redirect, url_for, session, Response
from gevent.pywsgi import WSGIServer
from flask_mysqldb import MySQL
#import redis
import MySQLdb.cursors
from datetime import datetime
import time
import json
import re
import locale
locale.setlocale(locale.LC_TIME, 'pl_PL')
# r = redis.Redis(host='192.168.100.18', port=6379, db=0, charset='utf-8')
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'flask'
app = Flask(__name__)
mysql = MySQL(app)
@app.route('/')
def dashboard():
return render_template('dashboard.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
message = ''
if request.method == 'POST' and 'email' in request.form and 'password' in request.form:
email = request.form['email']
password = request.form['password']
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute(
'SELECT * FROM users WHERE email = %s AND password = %s', (email, password,))
user = cursor.fetchone()
if user:
session['loggedin'] = True
session['userid'] = user['userid']
session['name'] = user['name']
session['email'] = user['email']
message = 'Zalogowano pomyślnie!'
return redirect(url_for('users'))
else:
message = 'Proszę wprowadź poprawny email lub hasło!'
return render_template('login.html', message=message)
@app.route('/logout')
def logout():
session.pop('loggedin', None)
session.pop('userid', None)
session.pop('email', None)
return redirect(url_for('dashboard'))
@app.route('/register', methods=['GET', 'POST'])
def register():
message = ''
if request.method == 'POST' and 'name' in request.form and 'password' in request.form and 'email' in request.form:
userName = request.form['name']
password = request.form['password']
email = request.form['email']
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute('SELECT * FROM users WHERE email = %s', (email,))
account = cursor.fetchone()
if account:
message = 'Konto z podanym adresem {} istnieje w bazie!'.format(
email)
elif not re.match(r'[^@]+@[^@]+\.[^@]+', email):
message = 'Nieprawidłowy adres email!'
elif not userName or not password or not email:
message = 'Proszę wypełnić formularz!'
else:
cursor.execute(
'INSERT INTO users VALUES (NULL, %s, %s, %s)', (userName, password, email,))
mysql.connection.commit()
message = 'Pomyślnie zarejestrowano nowego użytkownika {}!'.format(
userName)
elif request.method == 'POST':
message = 'Proszę wypełnić formularz!'
return render_template('register.html', message=message)
@app.route("/listen")
def listen():
def respond_to_client():
while True:
global current_time
current_time = datetime.now().strftime("%c")
_data = json.dumps({"clock": current_time})
yield f"id: 1\ndata: {_data}\nevent: online\n\n"
time.sleep(0.5)
return Response(respond_to_client(), mimetype='text/event-stream')
@app.route('/users')
def users():
if 'loggedin' in session:
with open('users.json', 'r') as file:
users = json.load(file)
return render_template('users.html', users=users)
if __name__ == "__main__":
app.run(debug=True)
http_server = WSGIServer(("localhost", 80), app)
http_server.serve_forever()