-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapplication.py
More file actions
113 lines (93 loc) · 3.82 KB
/
application.py
File metadata and controls
113 lines (93 loc) · 3.82 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
113
import os
from flask import Flask, render_template, url_for,request, session, redirect
from flask_socketio import SocketIO, emit
from userfunctions import User
from channelfunctions import Channel
from flask_session import Session
import datetime
app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
socketio = SocketIO(app)
messages = []
allusers = {}
channels = {'main' : {
'timecreated': datetime.datetime.now(),
'messages' : []
}}
@app.route("/")
def index():
print("HERE")
print(session.get('username'))
if session.get('username') is not None:
userChannels = User(session.get('username'),allusers).getUserChannel()
print(userChannels)
if 'channelname' in session:
return redirect(url_for('channel', current_channel=session.get('channelname')))
return redirect(url_for('channel', current_channel='main'))
return render_template("homepage.html")
@app.route("/chat", methods = ["POST","GET"])
def chat():
return render_template("chat.html")
@app.route("/loginproc",methods = ["POST"])
def loginproc():
username=request.form.get("username")
user = User(username,allusers).userlogin()
if user is None:
return redirect('/')
return redirect(url_for('channel',current_channel = "main"))
@app.route("/channels/<string:current_channel>")
def channel(current_channel):
try:
channellist = User(session.get('username'),allusers).getUserChannel()
if current_channel in channellist:
session["channelname"] = current_channel
return render_template('chat.html',username = session.get('username'),current_channel= current_channel,allchannels=channels, userChannels=channellist,messages=channels[current_channel]['messages'] )
return render_template('chat.html', username = session.get('username'),current_channel = 'Main',allchannels=channels, userChannels=channellist,messages=channels[current_channel]['messages'])
except KeyError:
print(channels)
return redirect('/')
@app.route('/logout')
def logout():
session.pop('username',None)
session.pop('channelname',None)
return redirect(url_for('index'))
@socketio.on('isTyping')
def isTyping(value):
emit('isTypingReceiver', {'user': value['user'], 'channel': session.get('channelname')}, broadcast=True)
@socketio.on('isNotTyping')
def isNotTyping(value):
emit('isNotTypingReceiver', {
'user': value['user'], 'channel': session.get('channelname')}, broadcast=True)
@socketio.on('newChannel')
def newChannel(value):
NewChannel = Channel(value['channel'],
channels).NewChannel(session.get('username'), allusers)
if NewChannel is None:
emit('Receiver', {
'newChannel': 'null', 'user': session.get('username')}, broadcast=True)
else:
emit('Receiver', {
'newChannel': value['channel'], 'user': session.get('username')}, broadcast=True)
@socketio.on('sendMessage')
def getSendMessage(value):
messagecontent = {
'message': value['message'],
'username': session.get('username'),
'time': value['time'],
'channel': value['channel']
}
channels[value['channel']]['messages'].append(messagecontent)
emit('msgreceiver', {'messagecontent': messagecontent}, broadcast=True)
@socketio.on('joinChannel')
def joinChannel(value):
joinChannel = Channel(value['channel'], channels).joinChannel(
value['username'], allusers)
if joinChannel is None:
emit('joinChannelReceiver', {
'newChannel': "null", 'user': session.get('username')}, broadcast=True)
else:
emit('joinChannelReceiver', {
'newChannel': value['channel'], 'user': session.get('username')}, broadcast=True)