add last login date and if the game was won by forfeit in getUserInfo

This commit is contained in:
2024-09-30 20:02:27 +02:00
parent 33957b5ffe
commit b68642a5cd
7 changed files with 27 additions and 10 deletions

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ # # By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2024/09/13 16:20:58 by tomoron #+# #+# # # Created: 2024/09/13 16:20:58 by tomoron #+# #+# #
# Updated: 2024/09/30 15:34:41 by tomoron ### ########.fr # # Updated: 2024/09/30 19:55:24 by tomoron ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -30,7 +30,7 @@ class Game:
"front" : 6.25 - ballRadius "front" : 6.25 - ballRadius
} }
mapLength = 13 mapLength = 13
startSpeed = 4 startSpeed = 6
jumperRadius = 0.2 jumperRadius = 0.2
wallsPos = [ wallsPos = [
{ "type":2, "pos": {"x": 1, "y": 0, "z": 1}, "isUp": False}, { "type":2, "pos": {"x": 1, "y": 0, "z": 1}, "isUp": False},
@ -471,7 +471,8 @@ class Game:
player2 = p2DbUser, player2 = p2DbUser,
p1Score = self.score[0], p1Score = self.score[0],
p2Score = self.score[1], p2Score = self.score[1],
winner = p1DbUser if self.winner == 1 else p2DbUser winner = p1DbUser if self.winner == 1 else p2DbUser,
forfeit = self.left != None
) )
results.save() results.save()
print("results saved") print("results saved")

View File

@ -12,6 +12,7 @@ class User(models.Model):
print("A" * 1000) print("A" * 1000)
github_link = models.CharField(max_length=1024, null=True, blank=True, default=None) github_link = models.CharField(max_length=1024, null=True, blank=True, default=None)
discord_username = models.CharField(max_length=1024, null=True, blank=True, default=None) discord_username = models.CharField(max_length=1024, null=True, blank=True, default=None)
last_login = models.DateTimeField()
class Message(models.Model): class Message(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
@ -29,6 +30,7 @@ class GameResults(models.Model):
p1Score = models.DecimalField(max_digits=3, decimal_places=0) p1Score = models.DecimalField(max_digits=3, decimal_places=0)
p2Score = models.DecimalField(max_digits=3, decimal_places=0) p2Score = models.DecimalField(max_digits=3, decimal_places=0)
winner = models.ForeignKey("User", on_delete=models.SET_NULL, null=True, related_name="winner") winner = models.ForeignKey("User", on_delete=models.SET_NULL, null=True, related_name="winner")
forfeit = models.BooleanField(default=False)
class MailVerify(models.Model): class MailVerify(models.Model):
token = models.CharField(primary_key=True, max_length=200, unique=True) token = models.CharField(primary_key=True, max_length=200, unique=True)

View File

@ -6,7 +6,7 @@
# By: marvin <marvin@student.42.fr> +#+ +:+ +#+ # # By: marvin <marvin@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2024/08/09 08:08:00 by edbernar #+# #+# # # Created: 2024/08/09 08:08:00 by edbernar #+# #+# #
# Updated: 2024/09/27 03:37:05 by tomoron ### ########.fr # # Updated: 2024/09/30 19:41:51 by tomoron ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -18,6 +18,7 @@ from email.mime.image import MIMEImage
from asgiref.sync import sync_to_async from asgiref.sync import sync_to_async
from ..fieldsVerif import mailValid, usernameValid, passwordValid from ..fieldsVerif import mailValid, usernameValid, passwordValid
from ..utils import genString from ..utils import genString
from django.utils import timezone
import smtplib import smtplib
import random import random
import re import re
@ -40,7 +41,7 @@ def createAccount(socket, content):
if(not passwordValid(content["password"], socket)): if(not passwordValid(content["password"], socket)):
return return
password = hashlib.md5((content["mail"] + content["password"]).encode()).hexdigest() password = hashlib.md5((content["mail"] + content["password"]).encode()).hexdigest()
new_user = User.objects.create(username=content["username"], mail=content["mail"], password=password) new_user = User.objects.create(username=content["username"], mail=content["mail"], password=password, last_login=timezone.now())
new_user.save() new_user.save()
verif_str = genString(200) verif_str = genString(200)
MailVerify.objects.create(uid=new_user, token=verif_str).save() MailVerify.objects.create(uid=new_user, token=verif_str).save()

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ # # By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2024/09/20 00:16:57 by edbernar #+# #+# # # Created: 2024/09/20 00:16:57 by edbernar #+# #+# #
# Updated: 2024/09/28 18:35:21 by tomoron ### ########.fr # # Updated: 2024/09/30 19:58:27 by tomoron ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -30,7 +30,8 @@ def getHistory(user, games):
"id":x.id, "id":x.id,
"p1":player, "p1":player,
"p2":opponent, "p2":opponent,
"won":x.winner == user "won":x.winner == user,
"forfeit":x.forfeit
}) })
return(res) return(res)

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ # # By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2024/08/03 08:10:38 by edbernar #+# #+# # # Created: 2024/08/03 08:10:38 by edbernar #+# #+# #
# Updated: 2024/09/29 03:14:58 by tomoron ### ########.fr # # Updated: 2024/09/30 19:43:54 by tomoron ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -34,6 +34,7 @@ async def loginByPass(socket, content):
socket.sendError("Account not verified, please verify your account before logging in",9025) socket.sendError("Account not verified, please verify your account before logging in",9025)
return return
if(await socket.login(u_info["id"], u_info["username"])): if(await socket.login(u_info["id"], u_info["username"])):
await socket.setLastLogin()
socket.sync_send(json.dumps({"type":"logged_in", "content":{ socket.sync_send(json.dumps({"type":"logged_in", "content":{
"status":True, "status":True,
"username":u_info["username"], "username":u_info["username"],

View File

@ -5,6 +5,7 @@ from .data import UID42, SECRET42, SERVER_URL
import requests import requests
import json import json
import os import os
from django.utils import timezone
def index(request): def index(request):
@ -114,8 +115,10 @@ def login42(request):
if(not db_user.exists()): if(not db_user.exists()):
while(User.objects.filter(username=login42).exists()): while(User.objects.filter(username=login42).exists()):
login42 += "_" login42 += "_"
db_user = [User.objects.create(username=login42, id42=id42)] db_user = [User.objects.create(username=login42, id42=id42, last_login=timezone.now())]
db_user[0].save() db_user[0].save()
else:
User.objects.filter(id=db_user[0].id).update(last_login=timezone.now())
request.session["logged_in"] = True request.session["logged_in"] = True
request.session["username"] = db_user[0].username request.session["username"] = db_user[0].username
request.session["id"] = db_user[0].id request.session["id"] = db_user[0].id

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ # # By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2024/09/09 14:31:30 by tomoron #+# #+# # # Created: 2024/09/09 14:31:30 by tomoron #+# #+# #
# Updated: 2024/09/29 03:18:30 by tomoron ### ########.fr # # Updated: 2024/09/30 19:42:45 by tomoron ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -19,6 +19,8 @@ import asyncio
import django import django
django.setup() django.setup()
from .models import User
from django.utils import timezone
from .typeRequests.getPrivateListMessage import getPrivateListMessage from .typeRequests.getPrivateListMessage import getPrivateListMessage
from .typeRequests.getPrivateListUser import getPrivateListUser from .typeRequests.getPrivateListUser import getPrivateListUser
from .typeRequests.sendPrivateMessage import sendPrivateMessage from .typeRequests.sendPrivateMessage import sendPrivateMessage
@ -66,6 +68,12 @@ class WebsocketHandler(AsyncWebsocketConsumer):
def session_save(self): def session_save(self):
self.scope["session"].save() self.scope["session"].save()
@sync_to_async
def setLastLogin(self):
if(self.id == None or self.id == 0):
return;
User.objects.filter(id=self.id).update(last_login=timezone.now())
def add_to_online(self, uid): def add_to_online(self, uid):
if(not uid): if(not uid):
return(0) return(0)