# app/modules/hosting/exceptions.py """ Hosting module exceptions. """ from app.exceptions.base import ( BusinessLogicException, ResourceNotFoundException, ) class HostedSiteNotFoundException(ResourceNotFoundException): # noqa: MOD025 """Raised when a hosted site is not found.""" def __init__(self, identifier: str): super().__init__( resource_type="HostedSite", identifier=identifier, ) class ClientServiceNotFoundException(ResourceNotFoundException): # noqa: MOD025 """Raised when a client service is not found.""" def __init__(self, identifier: str): super().__init__( resource_type="ClientService", identifier=identifier, ) class DuplicateSlugException(BusinessLogicException): # noqa: MOD025 """Raised when trying to create a site with a slug that already exists.""" def __init__(self, slug: str): super().__init__( message=f"A hosted site with slug '{slug}' already exists", error_code="DUPLICATE_SLUG", ) class InvalidStatusTransitionException(BusinessLogicException): # noqa: MOD025 """Raised when attempting an invalid status transition.""" def __init__(self, current_status: str, target_status: str): super().__init__( message=f"Cannot transition from '{current_status}' to '{target_status}'", error_code="INVALID_STATUS_TRANSITION", ) __all__ = [ "HostedSiteNotFoundException", "ClientServiceNotFoundException", "DuplicateSlugException", "InvalidStatusTransitionException", ]