diff --git a/games/templates/stats.html b/games/templates/stats.html index 62c28fa..d91b26a 100644 --- a/games/templates/stats.html +++ b/games/templates/stats.html @@ -39,14 +39,14 @@ - {% for purchase in top_10_by_playtime %} + {% for game in top_10_games_by_playtime %} - {{ purchase.edition.name }} + {{ game.name }} - {{ purchase.formatted_playtime }} + {{ game.formatted_playtime }} {% endfor %} diff --git a/games/views.py b/games/views.py index 5128235..5c931bd 100644 --- a/games/views.py +++ b/games/views.py @@ -247,14 +247,20 @@ def stats(request, year: int = 0): timestamp_start__gte=first_day_of_year ).filter(timestamp_start__lt=last_day_of_year) year_purchases = Purchase.objects.filter(session__in=year_sessions).distinct() - year_purchases_with_playtime = year_purchases.annotate( - total_playtime=Sum( - F("session__duration_calculated") + F("session__duration_manual") + + games_with_playtime = ( + Game.objects.filter(edition__purchase__session__in=year_sessions) + .annotate( + total_playtime=Sum( + F("edition__purchase__session__duration_calculated") + + F("edition__purchase__session__duration_manual") + ) ) + .values("id", "name", "total_playtime") ) - top_10_by_playtime = year_purchases_with_playtime.order_by("-total_playtime")[:10] - for purchase in top_10_by_playtime: - purchase.formatted_playtime = format_duration(purchase.total_playtime, "%2.0H") + top_10_games_by_playtime = games_with_playtime.order_by("-total_playtime")[:10] + for game in top_10_games_by_playtime: + game["formatted_playtime"] = format_duration(game["total_playtime"], "%2.0H") total_playtime_per_platform = ( year_sessions.values("purchase__platform__name") # Group by platform name @@ -277,7 +283,7 @@ def stats(request, year: int = 0): "total_games": year_purchases.count(), "total_2023_games": year_purchases.filter(edition__year_released=year).count(), "top_10_by_playtime_formatted": top_10_by_playtime, - "top_10_by_playtime": top_10_by_playtime, + "top_10_games_by_playtime": top_10_games_by_playtime, "year": year, "total_playtime_per_platform": total_playtime_per_platform, }