diff --git a/games/templates/stats.html b/games/templates/stats.html index a276c59..db40856 100644 --- a/games/templates/stats.html +++ b/games/templates/stats.html @@ -167,7 +167,7 @@ - {{ game.playtime | format_duration }} + {{ game.total_playtime | format_duration }} {% endfor %} diff --git a/games/views/general.py b/games/views/general.py index 28f615f..35c3eca 100644 --- a/games/views/general.py +++ b/games/views/general.py @@ -364,9 +364,16 @@ def stats(request: HttpRequest, year: int = 0) -> HttpResponse: ) total_spent = this_year_spendings["total_spent"] or 0 - games_with_playtime = Game.objects.filter( - sessions__in=this_year_sessions - ).distinct() + games_with_playtime = ( + Game.objects.filter(sessions__timestamp_start__year=year) + .annotate( + total_playtime=Sum( + F("sessions__duration_calculated"), + ) + ) + .filter(total_playtime__gt=timedelta(0)) + ) + month_playtimes = ( this_year_sessions.annotate(month=TruncMonth("timestamp_start")) .values("month") @@ -380,7 +387,7 @@ def stats(request: HttpRequest, year: int = 0) -> HttpResponse: .order_by("-session_average") .first() ) - top_10_games_by_playtime = games_with_playtime.order_by("-playtime") + top_10_games_by_playtime = games_with_playtime.order_by("-total_playtime") total_playtime_per_platform = ( this_year_sessions.values("game__platform__name")