Exemple #1
0
        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)
Exemple #3
0
        ]

    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()
Exemple #4
0
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!'