return print "vote:\n who: <%s>\n winner: <%s>\n loser: <%s>" % ( getIP(), players[0].username, players[1].username) if 'harababurel' in [ players[0].username, players[1].username ] or 'mihai.rus.777' in [players[0].username, players[1].username]: try: sh('sh beeper.sh') except Exception, e: print "tried to execute beeper.sh, but something went wrong (err: %s)" % e newStats = {} # firstly, get new ratings (without altering anything) for all players for currentPlayer in players: newStats[currentPlayer] = getNewEloRatings(currentPlayer, players) # secondly, update all ratings based on computed values for currentPlayer in players: currentPlayer.rating = newStats[currentPlayer]['newRating'] currentPlayer.volatility = newStats[currentPlayer]['newVolatility'] currentPlayer.games += 1 if currentPlayer == players[0]: currentPlayer.wins += 1 currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating) db.session.commit()
print 'done!' print 'simulating the vote process based on real world votes...', toFollow = {} for i, x in enumerate(votes): if i % 1000 == 0: print i players = [ db.session.query(Person).filter(Person.username == x.winner).first(), db.session.query(Person).filter(Person.username == x.loser).first() ] newStats = {} for currentPlayer in players: newStats[currentPlayer] = getNewEloRatings(currentPlayer, players, verbose=False) for currentPlayer in players: currentPlayer.rating = newStats[currentPlayer]['newRating'] currentPlayer.volatility = newStats[currentPlayer]['newVolatility'] currentPlayer.games += 1 if currentPlayer == players[0]: currentPlayer.wins += 1 currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating) if not currentPlayer.username in toFollow: toFollow[currentPlayer.username] = [SETTINGS['baseRating']] toFollow[currentPlayer.username].append(currentPlayer.rating)
] if detectSpam(players): #print "user <%s> is spamming votes for <%s>" % (getIP(), players[0].username) return print "vote:\n who: <%s>\n winner: <%s>\n loser: <%s>" % (getIP(), players[0].username, players[1].username) if 'harababurel' in [players[0].username, players[1].username] or 'mihai.rus.777' in [players[0].username, players[1].username]: try: sh('sh beeper.sh') except Exception, e: print "tried to execute beeper.sh, but something went wrong (err: %s)" % e newStats = {} # firstly, get new ratings (without altering anything) for all players for currentPlayer in players: newStats[currentPlayer] = getNewEloRatings(currentPlayer, players) # secondly, update all ratings based on computed values for currentPlayer in players: currentPlayer.rating = newStats[currentPlayer]['newRating'] currentPlayer.volatility = newStats[currentPlayer]['newVolatility'] currentPlayer.games += 1 if currentPlayer == players[0]: currentPlayer.wins += 1 currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating) db.session.commit()
votes = db.session.query(Vote).filter(Vote.spam == False).all() print 'done!' print 'simulating the vote process based on real world votes...', toFollow = {} for i, x in enumerate(votes): if i % 1000 == 0: print i players = [ db.session.query(Person).filter(Person.username == x.winner).first(), db.session.query(Person).filter(Person.username == x.loser).first() ] newStats = {} for currentPlayer in players: newStats[currentPlayer] = getNewEloRatings(currentPlayer, players, verbose=False) for currentPlayer in players: currentPlayer.rating = newStats[currentPlayer]['newRating'] currentPlayer.volatility = newStats[currentPlayer]['newVolatility'] currentPlayer.games += 1 if currentPlayer == players[0]: currentPlayer.wins += 1 currentPlayer.maxRating = max(currentPlayer.maxRating, currentPlayer.rating) if not currentPlayer.username in toFollow: toFollow[currentPlayer.username] = [SETTINGS['baseRating']] toFollow[currentPlayer.username].append(currentPlayer.rating) print 'done!'