1
- from flask import Flask , redirect , request , render_template , url_for
1
+ from flask import Flask , redirect , request , render_template , url_for , send_file
2
2
import secrets
3
3
import os
4
4
import time
5
+ import qrcode
6
+
5
7
6
8
app = Flask (__name__ )
7
9
app .config ['SECRET_KEY' ] = secrets .token_hex (32 )
@@ -15,7 +17,7 @@ def home():
15
17
@app .route ("/create/" , methods = ['GET' ])
16
18
def create ():
17
19
number = secrets .token_urlsafe (128 )
18
- new_file_room = open (f"room.{ number } .txt" , "w" )
20
+ new_file_room = open (f"{ os . getcwd () } /chats/ room.{ number } .txt" , "w" )
19
21
new_file_room .write ("" )
20
22
new_file_room .close ()
21
23
return redirect (f"/room/{ number } " )
@@ -31,8 +33,8 @@ def join():
31
33
# Get the messages from the room
32
34
@app .get ("/room/<string:number>/" )
33
35
def room_get (number ):
34
- if os .path .isfile (f"{ os .getcwd ()} /room.{ number } .txt" ):
35
- content_mes = open (f"room.{ number } .txt" , "r" , encoding = 'utf-8' ).read ()
36
+ if os .path .isfile (f"{ os .getcwd ()} /chats/ room.{ number } .txt" ):
37
+ content_mes = open (f"{ os . getcwd () } /chats/ room.{ number } .txt" , "r" , encoding = 'utf-8' ).read ()
36
38
title = f"{ number [:6 ]} ...{ number [- 6 :]} "
37
39
msg_list = content_mes .split ('\n ' ) if content_mes else None
38
40
return render_template ("room.html" , title = title , msg_list = msg_list , room_key = number )
@@ -42,12 +44,24 @@ def room_get(number):
42
44
# Post a message on the room
43
45
@app .post ("/room/<string:number>/" )
44
46
def room_post (number ):
45
- content_room = open (f"room.{ number } .txt" , "a" , encoding = 'utf-8' )
47
+ content_room = open (f"{ os . getcwd () } /chats/ room.{ number } .txt" , "a" , encoding = 'utf-8' )
46
48
if request .form ['message' ]:
47
49
time_msg = f"[{ time .localtime ().tm_hour } :{ time .localtime ().tm_min } .{ time .localtime ().tm_sec } ]"
48
50
content_room .write (f"{ time_msg } - { request .form ['message' ]} \n " )
49
51
return redirect (url_for ("room_get" , number = number ))
50
52
53
+ @app .get ("/room/<string:number>/qr/" )
54
+ def room_get_qr (number ):
55
+ # If the qr code of the room exists return it
56
+ if os .path .isfile (f"{ os .getcwd ()} /qrs/{ number } .png" ):
57
+ return send_file (f"{ os .getcwd ()} /qrs/{ number } .png" )
58
+ # If qr doesnt exists create it and send it
59
+ else :
60
+ qr_img = qrcode .make (f"localhost/room/{ number } /" )
61
+ qr_img .save (f"{ os .getcwd ()} /qrs/{ number } .png" )
62
+ return send_file (f"{ os .getcwd ()} /qrs/{ number } .png" )
63
+
64
+
51
65
if __name__ == "__main__" :
52
66
os .chdir (os .getcwd ())
53
67
app .run (host = "0.0.0.0" , port = 80 , debug = True )
0 commit comments