]> de.git.xonotic.org Git - xonotic/xonstat.git/blobdiff - xonstat/views/submission.py
Fix issue where servers on the same host resolve to the only one server (the one...
[xonotic/xonstat.git] / xonstat / views / submission.py
index b969b8261bb47ba7d693a999eb4ae0000c65955f..df246d0326458c5b4fb74a50850bce7caca4dfd6 100755 (executable)
@@ -132,26 +132,24 @@ def get_or_create_server(session=None, name=None, hashkey=None):
     name - server name of the server to be found or created\r
     hashkey - server hashkey\r
     """\r
-    # see if the server is already in the database\r
-    # if not, create one and the hashkey along with it\r
     try:\r
-        hashkey = session.query(ServerHashkey).filter_by(\r
-                hashkey=hashkey).one()\r
-        server = session.query(Server).filter_by(\r
-                server_id=hashkey.server_id).one()\r
-        log.debug("Found existing server {0} with hashkey {1}".format(\r
-            server.server_id, hashkey.hashkey))\r
-    except:\r
-        server = Server()\r
-        server.name = name\r
+        # find one by that name, if it exists\r
+        server = session.query(Server).filter_by(name=name).one()\r
+        log.debug("Found existing server {0}".format(server.server_id))\r
+\r
+    except MultipleResultsFound, e:\r
+        # multiple found, so also filter by hashkey\r
+        server = session.query(Server).filter_by(name=name).\\r
+                filter_by(hashkey=hashkey).one()\r
+        log.debug("Found existing server {0}".format(server.server_id))\r
+\r
+    except NoResultFound, e:\r
+        # not found, create one\r
+        server = Server(name=name, hashkey=hashkey)\r
         session.add(server)\r
         session.flush()\r
-\r
-        hashkey = ServerHashkey(server_id=server.server_id, \r
-                hashkey=hashkey)\r
-        session.add(hashkey)\r
         log.debug("Created server {0} with hashkey {1}".format(\r
-            server.server_id, hashkey.hashkey))\r
+            server.server_id, server.hashkey))\r
 \r
     return server\r
 \r