def get_or_create_player(headers: dict, color: str = "White"): name = headers.get(color) # surname, given_name if not name: LOGGER.error("Name was empty %s" % headers) fide_id_str = f"{color}FideId" fide_id = headers.get(fide_id_str) given_name = name[name.find(",") + 2:] surname = name[:name.find(",")] LOGGER.debug(f"given_name: {given_name}, surname: {surname}, fide_id: {fide_id}") try: player = Player.query.filter( or_(Player.fide_id.is_(None), Player.fide_id == fide_id), Player.given_name == given_name, Player.surname == surname ).one_or_none() except MultipleResultsFound as e: LOGGER.error("Multiple results found for combination: %s, %s fide_id: %s" % (surname, given_name, fide_id)) player = None if not player: player = Player(given_name=given_name, surname=surname, fide_id=fide_id) player.store() return player
def get_or_create_lichess_player(lichess_username: str): player = Player.query.filter_by(lichess_username=lichess_username).one_or_none() if not player: player = Player(lichess_username=lichess_username) player.store() return player