From 78f7ce51137542307e8cf56bf9bf080f7020b5a1 Mon Sep 17 00:00:00 2001
From: "Jan D. Behrens" <zykure@web.de>
Date: Tue, 28 Aug 2012 00:16:18 +0200
Subject: [PATCH] Fixed bug in "wins" query

---
 xonstat/batch/badges/gen_badges.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xonstat/batch/badges/gen_badges.py b/xonstat/batch/badges/gen_badges.py
index 6ff1639..905200d 100644
--- a/xonstat/batch/badges/gen_badges.py
+++ b/xonstat/batch/badges/gen_badges.py
@@ -117,12 +117,22 @@ def get_data(player):
             filter(PlayerGameStat.player_id == player_id).\
             one()
     
-    (total_stats['wins'],) = DBSession.query(
-            func.count("*")).\
-            filter(Game.game_id == PlayerGameStat.game_id).\
-            filter(PlayerGameStat.player_id == player_id).\
-            filter(Game.winner == PlayerGameStat.team or PlayerGameStat.rank == 1).\
-            one()
+#    (total_stats['wins'],) = DBSession.query(
+#            func.count("*")).\
+#            filter(Game.game_id == PlayerGameStat.game_id).\
+#            filter(PlayerGameStat.player_id == player_id).\
+#            filter(Game.winner == PlayerGameStat.team or PlayerGameStat.rank == 1).\
+#            one()
+
+    (total_stats['wins'],) = DBSession.\
+            query("total_wins").\
+            from_statement(
+                "select count(*) total_wins "
+                "from games g, player_game_stats pgs "
+                "where g.game_id = pgs.game_id "
+                "and player_id=:player_id "
+                "and (g.winner = pgs.team or pgs.rank = 1)"
+            ).params(player_id=player_id).one()
     
     ranks = DBSession.query("game_type_cd", "rank", "max_rank").\
             from_statement(
-- 
2.39.5