fix stats in getUserInfo request
This commit is contained in:
@ -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/11/18 14:32:21 by tomoron ### ########.fr #
|
# Updated: 2024/11/18 14:49:07 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -37,39 +37,42 @@ def getHistory(user, games):
|
|||||||
})
|
})
|
||||||
return(res)
|
return(res)
|
||||||
|
|
||||||
def getStats(user):
|
def getStats(user, socket):
|
||||||
games = GameResults.objects.filter(Q(player1=user) | Q(player2=user))
|
try:
|
||||||
nbGames = games.count()
|
games = GameResults.objects.filter(Q(player1=user) | Q(player2=user))
|
||||||
nbWin = games.filter(winner=user).count()
|
nbGames = games.count()
|
||||||
history = getHistory(user, games.order_by("-end_date")[:10])
|
nbWin = games.filter(winner=user).count()
|
||||||
nbForfeitOpponent = games.filter(Q(winner=user) & Q(forfeit=True))
|
history = getHistory(user, games.order_by("-end_date")[:10])
|
||||||
if(nbGames):
|
nbForfeitOpponent = games.filter(Q(winner=user) & Q(forfeit=True)).count()
|
||||||
forfeitRate = (100 / nbGames) * nbForfeitOpponent
|
if(nbGames):
|
||||||
else:
|
forfeitRate = (100 / nbGames) * nbForfeitOpponent
|
||||||
forfeitRate = 0
|
else:
|
||||||
|
forfeitRate = 0
|
||||||
|
|
||||||
averageScorePlayer1 = GameResults.objects.filter(player1=user).aggregate(Avg('p1Score'))["p1Score__avg"]
|
averageScorePlayer1 = GameResults.objects.filter(player1=user).aggregate(Avg('p1Score'))["p1Score__avg"]
|
||||||
averageScorePlayer2 = GameResults.objects.filter(player2=user).aggregate(Avg('p2Score'))["p2Score__avg"]
|
averageScorePlayer2 = GameResults.objects.filter(player2=user).aggregate(Avg('p2Score'))["p2Score__avg"]
|
||||||
if(averageScorePlayer1 == None and averageScorePlayer2 == None):
|
if(averageScorePlayer1 == None and averageScorePlayer2 == None):
|
||||||
avgGoals = 0
|
avgGoals = 0
|
||||||
elif(averageScorePlayer1 == None):
|
elif(averageScorePlayer1 == None):
|
||||||
avgGoals = averageScorePlayer2
|
avgGoals = averageScorePlayer2
|
||||||
elif(averageScorePlayer2 == None):
|
elif(averageScorePlayer2 == None):
|
||||||
avgGoals = averageScorePlayer1
|
avgGoals = averageScorePlayer1
|
||||||
else:
|
else:
|
||||||
avgGoals = (averageScorePlayer1 + averageScorePlayer2) / 2
|
avgGoals = (averageScorePlayer1 + averageScorePlayer2) / 2
|
||||||
limit = timezone.now() - timedelta(days=30)
|
limit = timezone.now() - timedelta(days=30)
|
||||||
nbGames30Days = games.filter(end_date__gt=limit).count()
|
nbGames30Days = games.filter(end_date__gt=limit).count()
|
||||||
|
|
||||||
|
|
||||||
res = {}
|
res = {}
|
||||||
res["nbLoss"] = nbGames - nbWin
|
res["nbLoss"] = int(nbGames) - int(nbWin)
|
||||||
res["nbWin"] = nbWin
|
res["nbWin"] = int(nbWin)
|
||||||
res["forfeitRate"] = forfeitRate
|
res["forfeitRate"] = int(forfeitRate)
|
||||||
res["avgGoals"] = avgGoals
|
res["avgGoals"] = int(avgGoals)
|
||||||
res["nbGames30Days"] = nbGames30Days
|
res["nbGames30Days"] = int(nbGames30Days)
|
||||||
res["history"] = history
|
res["history"] = history
|
||||||
return(res)
|
return(res)
|
||||||
|
except Exception as e:
|
||||||
|
socket.sendError("invalid request", 9005, e)
|
||||||
|
|
||||||
|
|
||||||
@sync_to_async
|
@sync_to_async
|
||||||
@ -85,7 +88,8 @@ def getUserInfo(socket, content):
|
|||||||
socket.sync_send({"type":"user_info", "content": None})
|
socket.sync_send({"type":"user_info", "content": None})
|
||||||
return
|
return
|
||||||
user = user[0]
|
user = user[0]
|
||||||
stats = getStats(user)
|
stats = getStats(user, socket)
|
||||||
|
print(stats)
|
||||||
online = True if user.id in socket.onlinePlayers else False
|
online = True if user.id in socket.onlinePlayers else False
|
||||||
socket.sync_send({"type":"user_info", "content":{
|
socket.sync_send({"type":"user_info", "content":{
|
||||||
'username': user.username,
|
'username': user.username,
|
||||||
|
Reference in New Issue
Block a user