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')