1
- from flask import Flask , redirect , request , render_template , url_for , send_file
1
+ from flask import Flask , redirect , request , render_template , url_for , send_file , make_response
2
2
import secrets
3
3
import os
4
4
import time
7
7
8
8
app = Flask (__name__ )
9
9
app .config ['SECRET_KEY' ] = secrets .token_hex (32 )
10
+ user_list = []
10
11
11
12
# Home page
12
- @app .route ("/" )
13
+ @app .get ("/" )
13
14
def home ():
14
- return render_template ("home.html" )
15
+ # If there is no cookies need to get them
16
+ if not request .cookies .get ('cookie_user' ):
17
+ return render_template ("home-post.html" )
18
+ # If there is already cookies on the browser return the home-get.html
19
+ else :
20
+ return render_template ("home-get.html" )
21
+
22
+
23
+ # to set the cookie for the user
24
+ @app .post ("/" )
25
+ def home_post ():
26
+ # If user has been requested
27
+ if request .form ['user' ]:
28
+ # If user is not elected already
29
+ if request .form ['user' ] not in user_list :
30
+ # Create a cookie for the user
31
+ resp = make_response (render_template ("home-get.html" ))
32
+ # Cookie for 20 minutes
33
+ tok = secrets .token_urlsafe (16 )
34
+ resp .set_cookie ("cookie_user" , tok , max_age = 60 * 20 )
35
+
36
+ # add user to session
37
+ user_list .append (request .form ['user' ])
38
+ print (user_list )
39
+ # redirect to the home-get page
40
+ return resp
41
+ # user in user_list
42
+ else :
43
+ return "usuario ya escogido"
44
+ # user not requested
45
+ else :
46
+ return render_template ("home-post.html" )
47
+
15
48
16
49
# Create a room
17
50
@app .route ("/create/" , methods = ['GET' ])
@@ -22,6 +55,7 @@ def create():
22
55
new_file_room .close ()
23
56
return redirect (f"/room/{ number } " )
24
57
58
+
25
59
# GET the join.html or POST to join a room
26
60
@app .route ("/join/" , methods = ['GET' , 'POST' ])
27
61
def join ():
@@ -30,6 +64,7 @@ def join():
30
64
if request .method == 'POST' :
31
65
return redirect (f"/room/{ request .form .get ('room_key' )} " )
32
66
67
+
33
68
# Get the messages from the room
34
69
@app .get ("/room/<string:number>/" )
35
70
def room_get (number ):
@@ -41,15 +76,18 @@ def room_get(number):
41
76
else :
42
77
return "no existe esa sala"
43
78
79
+
44
80
# Post a message on the room
45
81
@app .post ("/room/<string:number>/" )
46
82
def room_post (number ):
47
83
content_room = open (f"{ os .getcwd ()} /chats/room.{ number } .txt" , "a" , encoding = 'utf-8' )
48
84
if request .form ['message' ]:
49
85
time_msg = f"[{ time .localtime ().tm_hour } :{ time .localtime ().tm_min } .{ time .localtime ().tm_sec } ]"
50
- content_room .write (f"{ time_msg } - { request .form ['message' ]} \n " )
86
+ content_room .write (f"{ time_msg } - * { request . cookies . get ( 'cookie_user' ) } *: { request .form ['message' ]} \n " )
51
87
return redirect (url_for ("room_get" , number = number ))
52
88
89
+
90
+ # Get or generate QR code for room
53
91
@app .get ("/room/<string:number>/qr/" )
54
92
def room_get_qr (number ):
55
93
# If the qr code of the room exists return it
@@ -62,6 +100,14 @@ def room_get_qr(number):
62
100
return send_file (f"{ os .getcwd ()} /qrs/{ number } .png" )
63
101
64
102
103
+ # Delete your cookies
104
+ @app .route ("/del-cookie/" )
105
+ def delete_cookies ():
106
+ resp = make_response (render_template ("home-post.html" ))
107
+ resp .set_cookie ("cookie_user" , "" , max_age = 0 )
108
+ return resp
109
+
110
+
65
111
if __name__ == "__main__" :
66
112
os .chdir (os .getcwd ())
67
113
app .run (host = "0.0.0.0" , port = 80 , debug = True )
0 commit comments