ChessWithQuests

Manager (model.users.manager)

model.users.manager

User registry managing profile persistence, player associations, and activity logs.

UserManager

Manages registered user accounts, player linkages, and audit logging.

Source code in src/model/users/manager.py
class UserManager:
    """Manages registered user accounts, player linkages, and audit logging."""

    def __init__(self):
        """Initialize an empty UserManager."""
        self.users: Dict[int, User] = {}
        self._next_id: int = 1
        self.user_log: str = ""
        self.user_history: str = ""
        self.player_map: Dict[int, Any] = {}

    def register_user(self, user: User, user_id: Optional[int] = None) -> int:
        """Register a user in the repository.

        Args:
            user: User instance to register.
            user_id: Optional explicit user ID (auto-incremented if omitted).

        Returns:
            Assigned user ID integer.
        """
        uid = user_id if user_id is not None else self._next_id
        if user_id is None:
            self._next_id += 1
        self.users[uid] = user
        self.log_action(f"User registered: {user.username} (id: {uid})")
        return uid

    def get_user(self, user_id: int) -> Optional[User]:
        """Fetch a registered user by ID.

        Args:
            user_id: User identifier.

        Returns:
            User instance if found, None otherwise.
        """
        return self.users.get(user_id)

    find_user = get_user

    def link_player(self, user_id: int, player: Any) -> None:
        """Associate a User ID with a live Player game participant.

        Args:
            user_id: Registered user ID.
            player: Player instance to link.
        """
        self.player_map[user_id] = player

    def log_action(self, message: str) -> None:
        """Append an audit log entry.

        Args:
            message: Text message describing the action.
        """
        self.user_log += message + "\n"

    def record_history(self, entry: str) -> None:
        """Append an entry to the user history string.

        Args:
            entry: History record string.
        """
        self.user_history += entry + "\n"

    def execute_move(self, move: Optional[Any] = None, board: Optional[Any] = None) -> bool:
        """Execute a move in the context of user management and record history.

        Args:
            move: Optional Move instance to execute.
            board: Optional Board instance.

        Returns:
            True if executed or move is None, False if execution failed.
        """
        if move is not None and board is not None:
            success = move.execute(board) if hasattr(move, "execute") else False
            if success:
                self.record_history(f"Executed move: {move}")
            return success
        return True
__init__()

Initialize an empty UserManager.

Source code in src/model/users/manager.py
def __init__(self):
    """Initialize an empty UserManager."""
    self.users: Dict[int, User] = {}
    self._next_id: int = 1
    self.user_log: str = ""
    self.user_history: str = ""
    self.player_map: Dict[int, Any] = {}
execute_move(move=None, board=None)

Execute a move in the context of user management and record history.

Parameters:

Name Type Description Default
move Optional[Any]

Optional Move instance to execute.

None
board Optional[Any]

Optional Board instance.

None

Returns:

Type Description
bool

True if executed or move is None, False if execution failed.

Source code in src/model/users/manager.py
def execute_move(self, move: Optional[Any] = None, board: Optional[Any] = None) -> bool:
    """Execute a move in the context of user management and record history.

    Args:
        move: Optional Move instance to execute.
        board: Optional Board instance.

    Returns:
        True if executed or move is None, False if execution failed.
    """
    if move is not None and board is not None:
        success = move.execute(board) if hasattr(move, "execute") else False
        if success:
            self.record_history(f"Executed move: {move}")
        return success
    return True
get_user(user_id)

Fetch a registered user by ID.

Parameters:

Name Type Description Default
user_id int

User identifier.

required

Returns:

Type Description
Optional[User]

User instance if found, None otherwise.

Source code in src/model/users/manager.py
def get_user(self, user_id: int) -> Optional[User]:
    """Fetch a registered user by ID.

    Args:
        user_id: User identifier.

    Returns:
        User instance if found, None otherwise.
    """
    return self.users.get(user_id)

Associate a User ID with a live Player game participant.

Parameters:

Name Type Description Default
user_id int

Registered user ID.

required
player Any

Player instance to link.

required
Source code in src/model/users/manager.py
def link_player(self, user_id: int, player: Any) -> None:
    """Associate a User ID with a live Player game participant.

    Args:
        user_id: Registered user ID.
        player: Player instance to link.
    """
    self.player_map[user_id] = player
log_action(message)

Append an audit log entry.

Parameters:

Name Type Description Default
message str

Text message describing the action.

required
Source code in src/model/users/manager.py
def log_action(self, message: str) -> None:
    """Append an audit log entry.

    Args:
        message: Text message describing the action.
    """
    self.user_log += message + "\n"
record_history(entry)

Append an entry to the user history string.

Parameters:

Name Type Description Default
entry str

History record string.

required
Source code in src/model/users/manager.py
def record_history(self, entry: str) -> None:
    """Append an entry to the user history string.

    Args:
        entry: History record string.
    """
    self.user_history += entry + "\n"
register_user(user, user_id=None)

Register a user in the repository.

Parameters:

Name Type Description Default
user User

User instance to register.

required
user_id Optional[int]

Optional explicit user ID (auto-incremented if omitted).

None

Returns:

Type Description
int

Assigned user ID integer.

Source code in src/model/users/manager.py
def register_user(self, user: User, user_id: Optional[int] = None) -> int:
    """Register a user in the repository.

    Args:
        user: User instance to register.
        user_id: Optional explicit user ID (auto-incremented if omitted).

    Returns:
        Assigned user ID integer.
    """
    uid = user_id if user_id is not None else self._next_id
    if user_id is None:
        self._next_id += 1
    self.users[uid] = user
    self.log_action(f"User registered: {user.username} (id: {uid})")
    return uid
ChessWithQuests