This commit is contained in:
Raphael Rouiller
2024-07-08 14:06:52 +02:00
commit aa54287126
96 changed files with 2718 additions and 0 deletions

View File

@ -0,0 +1,42 @@
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import GameHistory, Stats
@receiver(post_save, sender=GameHistory)
def update_player_stats(sender, instance, created, **kwargs):
if created:
# get players
player_1_stats, _ = Stats.objects.get_or_create(player_id=instance.player_1_id)
player_2_stats, _ = Stats.objects.get_or_create(player_id=instance.player_2_id)
# update wins and losses
if instance.winner_id == instance.player_1_id:
player_1_stats.wins += 1
player_2_stats.losses += 1
else:
player_1_stats.losses += 1
player_2_stats.wins += 1
# update games played
player_1_stats.total_games_played += 1
player_2_stats.total_games_played += 1
# update win rate
player_1_stats.win_rate = player_1_stats.wins / player_1_stats.total_games_played * 100
player_2_stats.win_rate = player_2_stats.wins / player_2_stats.total_games_played * 100
# update hours played
player_1_stats.total_hours_played += instance.duration / 3600
player_2_stats.total_hours_played += instance.duration / 3600
# update goal scored
player_1_stats.goal_scored += instance.player_1_score
player_2_stats.goal_scored += instance.player_2_score
# update goal conceded
player_1_stats.goal_conceded += instance.player_2_score
player_2_stats.goal_conceded += instance.player_1_score
# save stats
player_1_stats.save()
player_2_stats.save()