]> git.rm.cloudns.org Git - xonotic/xonstat.git/commitdiff
Address unicode issues with repr and finding servers. Make nick and server fields...
authorAnt Zucaro <azucaro@gmail.com>
Tue, 18 Oct 2011 13:44:59 +0000 (09:44 -0400)
committerAnt Zucaro <azucaro@gmail.com>
Tue, 18 Oct 2011 13:44:59 +0000 (09:44 -0400)
xonstat/models.py
xonstat/views/submission.py

index 4b92e7616cb40b282aff9b795a75f9e84887f10e..2b1b21a720ccc1e894046d72f871e9fd37a4d3b1 100755 (executable)
@@ -24,8 +24,8 @@ class Player(object):
             return strip_colors(self.nick)
 
     def __repr__(self):
-        return "<Player(%s, %s, %s, %s)>" % (self.player_id, self.nick
-                self.create_dt, self.location)
+        return "<Player(%s, %s)>" % (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 "<Server(%s, %s, %s)>" % (self.server_id, self.name, 
-                self.ip_addr)
+        return "<Server(%s, %s)>" % (self.server_id, self.name.encode('utf-8'))
 
 
 class Map(object):
index 88f1560177dc7bf10b3ff50511a752431a67c507..37e51c41399d65da1415145d94171c0fcd45d51e 100755 (executable)
@@ -25,7 +25,7 @@ def register_new_nick(session, player, new_nick):
        player_nick = session.query(PlayerNick).filter_by(\r
                player_id=player.player_id, stripped_nick=stripped_nick).one()\r
     except NoResultFound, e:\r
-       # player_id/stripped_nick not found, create one\r
+           # player_id/stripped_nick not found, create one\r
         # but we don't store "Anonymous Player #N"\r
         if not re.search('^Anonymous Player #\d+$', player.nick):\r
            player_nick = PlayerNick()\r
@@ -35,8 +35,6 @@ def register_new_nick(session, player, new_nick):
             session.add(player_nick)\r
 \r
     # We change to the new nick regardless\r
-    log.debug('Changing nick from {0} to {1} for player {2}'.format(\r
-        player.nick, new_nick, player.player_id))\r
     player.nick = new_nick\r
     session.add(player)\r
 \r
@@ -316,6 +314,11 @@ def parse_body(request):
     for line in request.body.split('\n'):\r
         try:\r
             (key, value) = line.strip().split(' ', 1)\r
+\r
+            # Server (S) and Nick (n) fields can have international characters.\r
+            # We encode these as UTF-8.\r
+            if key in 'S' 'n':\r
+                value = unicode(value, 'utf-8')\r
     \r
             if key in 'V' 'T' 'G' 'M' 'S' 'C' 'R' 'W':\r
                 game_meta[key] = value\r