def __call__(self):
     session = named_scoped_session('footballchallenge')
     games = session.query(Game).filter(Game.calculated == False).all()
     for game in games:
         calculate_player_points(game)
         # calculate_team_points(game)
         game.calculated = True
     transaction.commit()
     return self.request.response.redirect(self.context.absolute_url())
     
    def write_to_db(self, playing_players, yellow, second_yellow, red, goals, penalty, assists, saves):
        home_ids = [player.id_ for player in self.get_home_team()]
        home_score = 0
        visitor_score = 0
        session = named_scoped_session('footballchallenge')
        game = session.query(Game).filter(Game.id_ == self.game_id).one()
        if game.cards:
            for card in game.cards:
                session.delete(card)
        if game.goals:
            for goal in game.goals:
                session.delete(goal)
        if game.saves:
            for save in game.saves:
                session.delete(save)
        if game.assists:
            for assist in game.assists:
                session.delete(assist)
        if playing_players:
            players = []
            for player_id in playing_players:
                player = session.query(Player).filter(Player.id_ == player_id).one()
                players.append(player)
            game.players = players
        if yellow:
            players = yellow.keys()
            self.write_cards(players, "yellow", game, session)
        if second_yellow:
            players = second_yellow.keys()
            self.write_cards(players, "second_yellow", game, session)
        if red:
            players = red.keys()
            self.write_cards(players, "red", game, session)
        for key, value in goals.items():
            if not value == '':
                try:
                    value_int = int(value)
                    if long(key) in home_ids:
                        home_score += value_int
                    else:
                        visitor_score += value_int
                except ValueError:
                    continue
                for count in range(0, value_int):
                    goal = Goal(key, game.id_, False)
                    session.add(goal)
        for key, value in penalty.items():
            if not value == '':
                try:
                    value_int = int(value)
                except ValueError:
                    continue
                for count in range(0, value_int):
                    goal = Goal(key, game.id_, True)
                    session.add(goal)
        for key, value in assists.items():
            if not value == '':
                try:
                    value_int = int(value)
                except ValueError:
                    continue
                for count in range(0, value_int):
                    assist = Assist(key, game.id_)
                    session.add(assist)

        game.score_nation1 = home_score
        game.score_nation2 = visitor_score
        for key, value in saves.items():
            if not value == '':
                try:
                    value_int = int(value)
                except ValueError:
                    continue
                for count in range(0, value_int):
                    save = Save(key, game.id_)
                    session.add(save)
        calculate_player_points(game)
        calculate_team_points(game)