from fastapi import HTTPException, status class TaskManagementException(HTTPException): def __init__( self, status_code: int, detail: str = None, ) -> None: super().__init__(status_code=status_code, detail=detail) class NotFoundException(TaskManagementException): def __init__(self, detail: str = "Item not found") -> None: super().__init__(status_code=status.HTTP_404_NOT_FOUND, detail=detail) class BadRequestException(TaskManagementException): def __init__(self, detail: str = "Bad request") -> None: super().__init__(status_code=status.HTTP_400_BAD_REQUEST, detail=detail) class UnauthorizedException(TaskManagementException): def __init__(self, detail: str = "Not authenticated") -> None: super().__init__( status_code=status.HTTP_401_UNAUTHORIZED, detail=detail, ) class ForbiddenException(TaskManagementException): def __init__(self, detail: str = "Not enough permissions") -> None: super().__init__(status_code=status.HTTP_403_FORBIDDEN, detail=detail) class EmailAlreadyExistsException(BadRequestException): def __init__(self) -> None: super().__init__("The user with this email already exists in the system") class UsernameAlreadyExistsException(BadRequestException): def __init__(self) -> None: super().__init__("The username is already taken") class InvalidCredentialsException(BadRequestException): def __init__(self) -> None: super().__init__("Incorrect email or password") class InactiveUserException(BadRequestException): def __init__(self) -> None: super().__init__("Inactive user")