From 97cf3effa50fc7c5d062eb390812721ef0de0a28 Mon Sep 17 00:00:00 2001 From: tomoron Date: Wed, 28 Aug 2024 00:23:20 +0200 Subject: [PATCH] add players status and send message to both users when a message is sent --- .../server/typeRequests/createAccount.py | 11 +++--- .../server/typeRequests/getPrivateListUser.py | 7 ++-- .../file/server/server/typeRequests/login.py | 26 +++++++------- .../server/typeRequests/sendPrivateMessage.py | 4 ++- .../file/server/server/websocket.py | 35 ++++++++++++++++++- .../djangoserver/file/server/test_data.sql | 4 +-- listError.txt | 3 +- 7 files changed, 62 insertions(+), 28 deletions(-) diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/createAccount.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/createAccount.py index ffb9bcf..2eadbed 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/createAccount.py +++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/createAccount.py @@ -6,7 +6,7 @@ # By: edbernar +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2024/08/03 15:10:23 by edbernar #+# #+# # -# Updated: 2024/08/26 20:07:57 by tomoron ### ########.fr # +# Updated: 2024/08/27 23:57:44 by tomoron ### ########.fr # # # # **************************************************************************** # @@ -60,7 +60,7 @@ def getPrivateListUser(socket, content=None): # Si user existe pas, faire ça : socket.sendError("User not found", 9008) id = socket.scope["session"].get("id", 0) request = """ - SELECT DISTINCT server_user.id AS id,'online' AS status, username, pfp + SELECT DISTINCT server_user.id AS id, username, pfp FROM server_user LEFT JOIN server_message AS sended ON sended.to_id=server_user.id LEFT JOIN server_message AS received ON received.sender_id=server_user.id @@ -69,5 +69,6 @@ def getPrivateListUser(socket, content=None): res = User.objects.raw(request,[id,id]) data = [] for x in res: - data.append({"name":x.username, "status":x.status, "pfp":x.pfp, "id":x.id}) + status = "online" if x.id in socket.onlinePlayers else "offline" + data.append({"name":x.username, "status": status, "pfp":x.pfp, "id":x.id}) socket.send(text_data=json.dumps({"type": "private_list_user", "content": data})) diff --git a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/login.py b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/login.py index 728e399..1d17f2c 100644 --- a/docker-compose/requirements/djangoserver/file/server/server/typeRequests/login.py +++ b/docker-compose/requirements/djangoserver/file/server/server/typeRequests/login.py @@ -6,7 +6,7 @@ # By: edbernar int: + if(self.scope["session"].get("logged_in", False)): + return(0) + self.scope["session"]["logged_in"] = True + self.scope["session"]["id"] = uid + self.scope["session"]["username"] = username + self.scope["session"].save() + self.add_to_online(uid) + return(1) + def connect(self): self.accept() self.send(text_data=json.dumps({"type":"logged_in", "content":{ @@ -28,10 +55,17 @@ class WebsocketHandler(WebsocketConsumer): "username":self.scope["session"].get("username",None), "id":self.scope["session"].get("id",0) }})) + if(self.scope["session"].get("logged_in", False)): + self.add_to_online(self.scope["session"].get("id", 0)) print("new client") def disconnect(self, close_code): print("you can go, i am not mad, we never wanted you anyway") + uid = self.scope["session"].get("id", 0) + if(uid in self.onlinePlayers): + self.onlinePlayers[uid].remove(self) + if(not len(self.onlinePlayers[uid])): + del self.onlinePlayers[uid] def receive(self, text_data): print("someone is talking") @@ -58,7 +92,6 @@ class WebsocketHandler(WebsocketConsumer): self.sendError("Invalid type", 9004) except Exception as e: self.sendError("Invalid request", 9005, e) - print(e) def sendError(self, message, code, error=None): try: diff --git a/docker-compose/requirements/djangoserver/file/server/test_data.sql b/docker-compose/requirements/djangoserver/file/server/test_data.sql index 9ab96fa..fe5f0ae 100644 --- a/docker-compose/requirements/djangoserver/file/server/test_data.sql +++ b/docker-compose/requirements/djangoserver/file/server/test_data.sql @@ -1,6 +1,6 @@ INSERT INTO "server_user" ("username", "mail", "password", "id42", "pfp") VALUES -('tomoron', 'a@a.com', 'a5f1efc32bcc4dc53e471f9620b78ca9', NULL, '/static/default_pfp.jpg'), -('patate', 'b@b.com', '5e547979d3f20f43c87e5e0e8406f267', NULL, '/static/default_pfp.jpg'); +('tomoron', 'a@a.com', 'a5f1efc32bcc4dc53e471f9620b78ca9', NULL, '/static/img/default_pfp.jpg'), +('patate', 'b@b.com', '5e547979d3f20f43c87e5e0e8406f267', NULL, '/static/img/default_pfp.jpg'); INSERT INTO "server_message" ("date", "sender_id", "to_id", "content") VALUES ('2024-08-25 18:10:54.27476+00', 1, 2, 'coucou'), diff --git a/listError.txt b/listError.txt index 8fe5637..0ce9ab4 100644 --- a/listError.txt +++ b/listError.txt @@ -12,4 +12,5 @@ - 9008 : User not found - 9009 : Invalid message sent - 9010 : Invalid token 42 -- 9011 : Not user registered with this 42 account \ No newline at end of file +- 9011 : Not user registered with this 42 account +- 9012 : Already logged in