Skip to content

Error View Model

error_view_model

A collection of error messages ready for presentation.

ErrorViewModel dataclass

Holds one or more ErrorMessageModel entries produced by an
ErrorPresenter.

Multiple entries coexist when a single operation results in several
validation or business-rule failures.

Example
from forging_blocks.presentation.errors import ErrorMessageModel, ErrorViewModel

msg1 = ErrorMessageModel(title="Name is required", field="name")
msg2 = ErrorMessageModel(title="Email is invalid", field="email")
view = ErrorViewModel(messages=(msg1, msg2))
assert len(view.messages) == 2
assert view.messages[0].title == "Name is required"
Source code in src/forging_blocks/presentation/errors/error_view_model.py
@auto_hash
@auto_freeze
@dataclass
class ErrorViewModel:
    """Holds one or more ``ErrorMessageModel`` entries produced by an
    ``ErrorPresenter``.

    Multiple entries coexist when a single operation results in several
    validation or business-rule failures.

    Example:
        ```python
        from forging_blocks.presentation.errors import ErrorMessageModel, ErrorViewModel

        msg1 = ErrorMessageModel(title="Name is required", field="name")
        msg2 = ErrorMessageModel(title="Email is invalid", field="email")
        view = ErrorViewModel(messages=(msg1, msg2))
        assert len(view.messages) == 2
        assert view.messages[0].title == "Name is required"
        ```
    """

    messages: tuple[ErrorMessageModel, ...] = field(default_factory=tuple[ErrorMessageModel])

    def __post_init__(self) -> None:
        """Ensure ``messages`` is stored as an immutable tuple."""
        self.messages = tuple(self.messages)

__post_init__() -> None

Ensure messages is stored as an immutable tuple.

Source code in src/forging_blocks/presentation/errors/error_view_model.py
def __post_init__(self) -> None:
    """Ensure ``messages`` is stored as an immutable tuple."""
    self.messages = tuple(self.messages)