Example #1
0
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
Example #2
0
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