add last login date and if the game was won by forfeit in getUserInfo
This commit is contained in:
@ -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")
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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"],
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user