def finalise_results(self): """ Calculate RunningGameParticipant's result, under each scheme """ for rgp in self.game.rgps: payments = self.session.query(PaymentToPlayer) \ .filter(PaymentToPlayer.gameid == self.game.gameid) \ .filter(PaymentToPlayer.userid == rgp.userid).all() for scheme, include in \ RunningGameParticipantResult.SCHEME_DETAILS.iteritems(): # @UndefinedVariable rgpr = RunningGameParticipantResult() rgpr.gameid = rgp.gameid rgpr.userid = rgp.userid rgpr.scheme = scheme rgpr.result = sum(payment.amount for payment in payments if payment.reason in include) self.session.add(rgpr) logging.debug("gameid %d, userid %d, scheme %s: result %0.4f", rgpr.gameid, rgpr.userid, rgpr.scheme, rgpr.result)