From: Ant Zucaro Date: Thu, 12 Jan 2012 17:41:15 +0000 (-0500) Subject: Fixed a few indexing things, but still not working (elo is 100). X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cc00938d1c953602036819700c8fc3a5f2b1fa67;p=xonotic%2Fxonstat.git Fixed a few indexing things, but still not working (elo is 100). --- diff --git a/xonstat/models.py b/xonstat/models.py index 8e47e74..241b963 100755 --- a/xonstat/models.py +++ b/xonstat/models.py @@ -1,4 +1,5 @@ import logging +import math import sqlalchemy from datetime import timedelta from sqlalchemy.orm import mapper @@ -126,16 +127,14 @@ class Game(object): for pid in elos.keys(): eloadjust[pid] = 0 - # need to turn this into a list to iterate based - # on numerical index - elos = list(elos) + pids = elos.keys() if len(elos) < 2: return elos - for i in xrange(0, len(elos)): - ei = elos[i] - for j in xrange(i+1, len(elos)): - ej = elos[j] + for i in xrange(0, len(pids)): + ei = elos[pids[i]] + for j in xrange(i+1, len(pids)): + ej = elos[pids[j]] si = scores[ei.player_id] sj = scores[ej.player_id] @@ -168,9 +167,9 @@ class Game(object): adjustment = scorefactor_real - scorefactor_elo eloadjust[ei.player_id] += adjustment eloadjust[ei.player_id] -= adjustment - for e in elos: - e.elo = max(e.elo + eloadjust[e.player_id] * e.k * ep.global_K / float(len(elos) - 1), ep.floor) - e.games += 1 + for pid in pids: + elos[pid].elo = max(elos[pid].elo + eloadjust[pid] * elos[pid].k * ep.global_K / float(len(elos) - 1), ep.floor) + elos[pid].games += 1 return elos @@ -246,6 +245,7 @@ class PlayerElo(object): self.elo = 0 self.k = 0.0 self.score = 0 + self.games = 0 def __repr__(self): return "" % (self.player_id, self.game_type_cd,