From 0b93aff3086bccf4339c7b37438cf9e86fb731ee Mon Sep 17 00:00:00 2001 From: Ant Zucaro Date: Fri, 11 Nov 2011 10:05:27 -0500 Subject: [PATCH] Fix flush() error with partitioned tables by explicitly setting the PK value. --- xonstat/models.py | 6 ++++-- xonstat/views/submission.py | 13 ++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/xonstat/models.py b/xonstat/models.py index 08a7cb5..0dcda1f 100755 --- a/xonstat/models.py +++ b/xonstat/models.py @@ -58,8 +58,9 @@ class Map(object): class Game(object): - def __init__(self, start_dt=None, game_type_cd=None, + def __init__(self, game_id=None, start_dt=None, game_type_cd=None, server_id=None, map_id=None, winner=None): + self.game_id = game_id self.start_dt = start_dt self.game_type_cd = game_type_cd self.server_id = server_id @@ -75,7 +76,8 @@ class Game(object): class PlayerGameStat(object): - def __init__(self, create_dt=None): + def __init__(self, player_game_stat_id=None, create_dt=None): + self.player_game_stat_id = player_game_stat_id self.create_dt = create_dt def __repr__(self): diff --git a/xonstat/views/submission.py b/xonstat/views/submission.py index ea3e5c1..1cf3493 100755 --- a/xonstat/views/submission.py +++ b/xonstat/views/submission.py @@ -5,6 +5,7 @@ import re import time from pyramid.config import get_current_registry from pyramid.response import Response +from sqlalchemy import Sequence from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound from xonstat.d0_blind_id import d0_blind_id_verify from xonstat.models import * @@ -207,11 +208,11 @@ def create_game(session=None, start_dt=None, game_type_cd=None, map_id - map on which the game was played winner - the team id of the team that won """ - - game = Game(start_dt=start_dt, game_type_cd=game_type_cd, + seq = Sequence('games_game_id_seq') + game_id = session.execute(seq) + game = Game(game_id=game_id, start_dt=start_dt, game_type_cd=game_type_cd, server_id=server_id, map_id=map_id, winner=winner) session.add(game) - session.flush() log.debug("Created game id {0} on server {1}, map {2} at \ {3}".format(game.game_id, server_id, map_id, start_dt)) @@ -278,7 +279,10 @@ def create_player_game_stat(session=None, player=None, # in here setup default values (e.g. if game type is CTF then # set kills=0, score=0, captures=0, pickups=0, fckills=0, etc # TODO: use game's create date here instead of now() - pgstat = PlayerGameStat(create_dt=datetime.datetime.now()) + seq = Sequence('player_game_stats_player_game_stat_id_seq') + pgstat_id = session.execute(seq) + pgstat = PlayerGameStat(player_game_stat_id=pgstat_id, + create_dt=datetime.datetime.now()) # set player id from player record pgstat.player_id = player.player_id @@ -335,7 +339,6 @@ def create_player_game_stat(session=None, player=None, session.add(game) session.add(pgstat) - session.flush() return pgstat -- 2.39.2