forked from Gooz95/Python-2024
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
153 lines (111 loc) · 4.49 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
from flask import Flask, render_template, request, redirect, make_response
from siwel_files import siwel
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/membership/')
def membership():
return render_template('membership.html')
@app.route('/classes/')
def classes():
return render_template('classes.html')
@app.route('/services/')
def services():
return render_template('services.html')
@app.route('/about/')
def about():
return render_template('about.html')
# lewis custom library stuff:
# purchase a specific membership type
@app.route('/membership/purchases/')
def purchase():
type = request.args.get("type")
if type not in ["standard", "premium", "family"]: # get query from url to show contents
return redirect("/membership/", code=302)
else:
return siwel.return_purchase_html(type)
# allow user to view events/classes
@app.route('/classes/event-view/', methods=['POST']) # post form which gets the date from user input
def event_view():
day = request.form.get("day")
month = request.form.get("month")
year = request.form.get("year")
return siwel.return_event_html(day, month, year) # display event html page
# admin stuff
# add event/class page
@app.route('/admin/')
def admin():
try:
admin = request.cookies.get("admin") # if admin cookie exists then allow user onto the page
if bool(int(admin)):
return siwel.return_admin_html()
except:
pass
return redirect("/", code=302)
# handle event add form
@app.route('/event-add/', methods=['POST']) # get all the inputs the admin put in for adding an event
def event_add():
class_name = request.form.get("class-name")
day = request.form.get("day")
month = request.form.get("month")
year = request.form.get("year")
start_time = request.form.get("start-time")
end_time = request.form.get("end-time")
trainer = request.form.get("trainers")
siwel.db_event_add(class_name, day, month, year, start_time, end_time, trainer) # pass to add event route
return redirect("/admin/", code=302)
# manage user type
@app.route('/manage-user/', methods=['POST'])
def manage_user():
usern = request.form.get("usern")
usert = request.form.get("user-type")
siwel.db_user_update(usern, usert) # pass to manage user route
return redirect("/admin/", code=302)
# handling user stuff
# profile page
@app.route('/profile/')
def profile():
user = request.cookies.get("user")
return siwel.return_profile_html(user) # load page content based off if user cookie exists or not
# login page
@app.route('/profile/login/')
def login():
return render_template('login.html')
# handle the login form
@app.route('/login-event/', methods=['POST']) # get username and password from login page form
def login_event():
usern = request.form.get("username")
passw = request.form.get("password")
login = siwel.log_in_user(usern, passw) # pass to login route
if login["login"]: # if login returned true meaning the details are correct
res = make_response(redirect("/profile/", code=302))
if login["data"][1]: # extra step to check if user is admin
res.set_cookie("admin", "1") # set admin cookie
res.set_cookie("user", login["data"][0]) # set user logged in cookie
return res
return redirect("/profile/login/", code=302) # else just redirect them back to login page
# create a user account
@app.route('/profile/create-account/')
def create_account():
return render_template('create-account.html')
# handle the create account form
@app.route('/create-user/', methods=['POST']) # get first name, last name, and password from create account form
def create_event():
firstn = request.form.get("firstname")
lastn = request.form.get("lastname")
passw = request.form.get("password")
create = siwel.create_user(firstn, lastn, passw) # pass to create account route
res = make_response(redirect("/profile/", code=302))
res.set_cookie("user", create) # set logged in user cookie
return res
# logout and delete cookies
@app.route('/logout/')
def logout_event():
res = make_response(redirect("/profile/", code=302))
res.set_cookie("user", max_age=0) # as there is no delete cookie function then make the cookie die with max age 0
res.set_cookie("admin", max_age=0) # same for admin cookie if they were admin
return res
# host the website
if __name__ == "__main__":
app.run(debug=True) # debug true for testing purposes