From f71ba67ac9552453b00fd8c7cdadb4187249c821 Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Tue, 18 Oct 2011 09:44:59 -0400 Subject: [PATCH] Address unicode issues with repr and finding servers. Make nick and server fields UTF-8 encoded from the start. --- xonstat/models.py | 7 +++---- xonstat/views/submission.py | 9 ++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/xonstat/models.py b/xonstat/models.py index 4b92e76..2b1b21a 100755 --- a/xonstat/models.py +++ b/xonstat/models.py @@ -24,8 +24,8 @@ class Player(object): return strip_colors(self.nick) def __repr__(self): - return "" % (self.player_id, self.nick, - self.create_dt, self.location) + return "" % (self.player_id, + self.nick.encode('utf-8')) class Mutator(object): @@ -51,8 +51,7 @@ class Server(object): self.name = name def __repr__(self): - return "" % (self.server_id, self.name, - self.ip_addr) + return "" % (self.server_id, self.name.encode('utf-8')) class Map(object): diff --git a/xonstat/views/submission.py b/xonstat/views/submission.py index 88f1560..37e51c4 100755 --- a/xonstat/views/submission.py +++ b/xonstat/views/submission.py @@ -25,7 +25,7 @@ def register_new_nick(session, player, new_nick): player_nick = session.query(PlayerNick).filter_by( player_id=player.player_id, stripped_nick=stripped_nick).one() except NoResultFound, e: - # player_id/stripped_nick not found, create one + # player_id/stripped_nick not found, create one # but we don't store "Anonymous Player #N" if not re.search('^Anonymous Player #\d+$', player.nick): player_nick = PlayerNick() @@ -35,8 +35,6 @@ def register_new_nick(session, player, new_nick): session.add(player_nick) # We change to the new nick regardless - log.debug('Changing nick from {0} to {1} for player {2}'.format( - player.nick, new_nick, player.player_id)) player.nick = new_nick session.add(player) @@ -316,6 +314,11 @@ def parse_body(request): for line in request.body.split('\n'): try: (key, value) = line.strip().split(' ', 1) + + # Server (S) and Nick (n) fields can have international characters. + # We encode these as UTF-8. + if key in 'S' 'n': + value = unicode(value, 'utf-8') if key in 'V' 'T' 'G' 'M' 'S' 'C' 'R' 'W': game_meta[key] = value -- 2.39.2