Esempio n. 1
0
    def add_team_functional(self):
        """ Add a team to the database using functions instead of methods"""
        # parse out the parts - background, header, players
        parts = parse_lines(self.lines)
        self.warnings = parts['warnings']

        # extract the background such a league, sponsor and color
        background = extract_background(parts['background'])

        # extract the players using the header as lookup
        lookup = extract_column_indices_lookup(parts['header'])
        players = extract_players(parts["players"], lookup)
        self.warnings = self.warnings + players['warnings']

        # add the players
        player_models = []
        for player_json in players['player_info']:
            try:
                if (player_json['player_id'] is None):
                    # need to create the player
                    player = Player(player_json['name'],
                                    player_json['email'],
                                    gender=player_json["gender"])
                    self.session.add(player)
                    self.session.commit()
                else:
                    email = player_json['email']
                    player = Player.query.filter(
                        func.lower(Player.email) == func.lower(email)).first()
                player_models.append(player.json())
            except Exception as error:
                player_info = "-".join(
                    [player_json["name"], player_json["email"]])
                self.warnings.append(
                    INVALID_PLAYER.format(player_info, str(error)))

        # get the team, create if does not exist
        if background['team']['team_id'] is None:
            team = Team(color=background['team']['color'],
                        sponsor_id=background['sponsor']['sponsor_id'],
                        league_id=background['league']['league_id'],
                        year=date.today().year)
            self.session.add(team)
        else:

            # get the team and remove all players
            team = Team.query.get(background['team']['team_id'])
            team.players = []
        set_captain = False
        for player in player_models:
            if (player["player_name"].lower() == background["captain"]
                ["player_name"].lower()):
                set_captain = True
                team.insert_player(player["player_id"], captain=True)
            else:
                team.insert_player(player["player_id"], captain=False)
        if not set_captain:
            self.warnings.append(CAPTAIN_NOT_ASSIGNED)
        self.session.commit()
 def post(self):
     """
         POST request for Player List
         Route: Routes['player']
         Parameters :
             player_name: The player's name (string)
             gender: a one letter character representing gender (string)
             email: the email of the player (string)
             password: the password of the player(string)
             active: 1 if player is active and 0 otherwise (int)
         Returns:
             if successful
                 status: 200
                 mimetype: application/json
                 data: the created player id (int)
             if email is duplicate
                 status: NUESC
                 mimetype: application/json
                 data: None
             if invalid field
                 status: IFSC
                 mimetype: application/json
                 data: None
             othwerwise
                 status: 404
                 mimetype: application/json
                 data: None
     """
     # create a new user
     args = post_parser.parse_args()
     gender = None
     player_name = None
     email = None
     password = "******"
     active = True
     if args['player_name']:
         player_name = args['player_name']
     if args['gender']:
         gender = args['gender']
     if args['email']:
         email = args['email']
     if args['password']:
         password = args['password']
     if args['active']:
         active = args['active'] == 1 if True else False
     player = Player(player_name, email, gender, password, active=active)
     DB.session.add(player)
     DB.session.commit()
     result = player.id
     handle_table_change(Tables.PLAYER, item=player.json())
     return Response(dumps(result), status=201, mimetype="application/json")
def create_and_login():
    """Creates a player if they do not exist and login them in."""
    player_info = request.get_json(silent=True)
    player = Player.query.filter(
        Player.email == player_info.get('email')).first()
    if player is None:
        LOGGER.info(f"Adding player to league: {player_info}")
        player = Player(player_info.get("player_name", str(uuid.uuid1())),
                        player_info.get("email"),
                        gender=player_info.get("gender", "m"))
        DB.session.add(player)
        DB.session.commit()
    login_user(player)
    return Response(json.dumps(player.json()),
                    200,
                    mimetype='application/json')