]> de.git.xonotic.org Git - xonotic/xonstat.git/commitdiff
Fix partitioned table error. Change to new registry view.
authorantzucaro <azucaro@gmail.com>
Fri, 11 Nov 2011 21:49:04 +0000 (16:49 -0500)
committerantzucaro <azucaro@gmail.com>
Fri, 11 Nov 2011 21:49:04 +0000 (16:49 -0500)
xonstat/views/main.py
xonstat/views/server.py
xonstat/views/submission.py

index d81487c16a11488a1ac4880a34624e3feb195068..3e353b35195c4cf4514b200a7f5e49f901779712 100755 (executable)
@@ -2,7 +2,6 @@ import logging
 import sqlalchemy.sql.functions as func
 import sqlalchemy.sql.expression as expr
 from datetime import datetime, timedelta
-from pyramid.config import get_current_registry
 from pyramid.response import Response
 from xonstat.models import *
 from xonstat.util import *
@@ -10,10 +9,9 @@ from xonstat.util import *
 log = logging.getLogger(__name__)
 
 def main_index(request):
-    settings = get_current_registry().settings
     try: 
         leaderboard_lifetime = int(
-                settings['xonstat.leaderboard_lifetime'])
+                request.registry.settings['xonstat.leaderboard_lifetime'])
     except:
         leaderboard_lifetime = 30
 
index a706dc2d8e1e2415d89163bc5948372c8bcbb235..c866fc4b423e79778fa0d02344f16503e4adecfe 100755 (executable)
@@ -3,7 +3,6 @@ import sqlalchemy.sql.functions as func
 import sqlalchemy.sql.expression as expr\r
 import time\r
 from datetime import datetime, timedelta\r
-from pyramid.config import get_current_registry\r
 from pyramid.response import Response\r
 from sqlalchemy import desc\r
 from webhelpers.paginate import Page, PageURL\r
@@ -40,11 +39,9 @@ def server_info(request):
     """\r
     server_id = request.matchdict['id']\r
 \r
-    # get settings specific to this view\r
-    settings = get_current_registry().settings\r
     try: \r
         leaderboard_lifetime = int(\r
-                settings['xonstat.leaderboard_lifetime'])\r
+                request.registry.settings['xonstat.leaderboard_lifetime'])\r
     except:\r
         leaderboard_lifetime = 30\r
 \r
index 1cf34933fc5921f03a010c9428b2a7ee7fa5f9d3..96bd85e3ec41e8427d58ad3058b8534ab73d4239 100755 (executable)
@@ -3,7 +3,6 @@ import logging
 import pyramid.httpexceptions\r
 import re\r
 import time\r
-from pyramid.config import get_current_registry\r
 from pyramid.response import Response\r
 from sqlalchemy import Sequence\r
 from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound\r
@@ -38,7 +37,7 @@ def verify_request(request):
     return (idfp, status)\r
 \r
 \r
-def has_minimum_real_players(player_events):\r
+def has_minimum_real_players(settings, player_events):\r
     """\r
     Determines if the collection of player events has enough "real" players\r
     to store in the database. The minimum setting comes from the config file\r
@@ -46,7 +45,6 @@ def has_minimum_real_players(player_events):
     """\r
     flg_has_min_real_players = True\r
 \r
-    settings = get_current_registry().settings\r
     try: \r
         minimum_required_players = int(\r
                 settings['xonstat.minimum_required_players'])\r
@@ -362,7 +360,10 @@ def create_player_weapon_stats(session=None, player=None,
         matched = re.search("acc-(.*?)-cnt-fired", key)\r
         if matched:\r
             weapon_cd = matched.group(1)\r
+            seq = Sequence('player_weapon_stats_player_weapon_stats_id_seq')\r
+            pwstat_id = session.execute(seq)\r
             pwstat = PlayerWeaponStat()\r
+            pwstat.player_weapon_stats_id = pwstat_id\r
             pwstat.player_id = player.player_id\r
             pwstat.game_id = game.game_id\r
             pwstat.player_game_stat_id = pgstat.player_game_stat_id\r
@@ -389,7 +390,9 @@ def create_player_weapon_stats(session=None, player=None,
                 pwstat.frags = int(round(float(\r
                         player_events['acc-' + weapon_cd + '-frags'])))\r
 \r
+            log.debug(pwstat)\r
             session.add(pwstat)\r
+            log.debug(pwstat)\r
             pwstats.append(pwstat)\r
 \r
     return pwstats\r
@@ -473,33 +476,35 @@ def stats_submit(request):
         (idfp, status) = verify_request(request)\r
         if not idfp:\r
             raise pyramid.httpexceptions.HTTPUnauthorized\r
-\r
+     \r
         (game_meta, players) = parse_body(request)  \r
-    \r
+     \r
         if not has_required_metadata(game_meta):\r
             log.debug("Required game meta fields missing. "\\r
                     "Can't continue.")\r
             raise pyramid.exceptions.HTTPUnprocessableEntity\r
-   \r
+     \r
         if not is_supported_gametype(game_meta['G']):\r
             raise pyramid.httpexceptions.HTTPOk\r
      \r
-        if not has_minimum_real_players(players):\r
+        if not has_minimum_real_players(request.registry.settings, players):\r
             log.debug("The number of real players is below the minimum. " + \r
                 "Stats will be ignored.")\r
             raise pyramid.httpexceptions.HTTPOk\r
-\r
+     \r
         server = get_or_create_server(session=session, hashkey=idfp, \r
                 name=game_meta['S'])\r
-\r
+     \r
         gmap = get_or_create_map(session=session, name=game_meta['M'])\r
-\r
+        log.debug(gmap)\r
+     \r
         game = create_game(session=session, \r
                 start_dt=datetime.datetime(\r
                     *time.gmtime(float(game_meta['T']))[:6]), \r
                 server_id=server.server_id, game_type_cd=game_meta['G'], \r
-                map_id=gmap.map_id)\r
-    \r
+                   map_id=gmap.map_id)\r
+        log.debug(gmap)\r
+     \r
         # find or create a record for each player\r
         # and add stats for each if they were present at the end\r
         # of the game\r
@@ -508,15 +513,15 @@ def stats_submit(request):
                 nick = player_events['n']\r
             else:\r
                 nick = None\r
-\r
\r
             if 'matches' in player_events and 'scoreboardvalid' \\r
-                    in player_events:\r
+                in player_events:\r
                 player = get_or_create_player(session=session, \r
                     hashkey=player_events['P'], nick=nick)\r
                 log.debug('Creating stats for %s' % player_events['P'])\r
                 create_player_stats(session=session, player=player, game=game, \r
                         player_events=player_events)\r
-    \r
+     \r
         session.commit()\r
         log.debug('Success! Stats recorded.')\r
         return Response('200 OK')\r