- Standardize quote style (single to double quotes) - Reorder and group imports alphabetically - Fix line breaks and indentation for consistency - Apply PEP 8 formatting standards Also updated Makefile to exclude both venv and .venv from code quality checks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
# app/exceptions/order.py
|
|
"""
|
|
Order management specific exceptions.
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
from .base import (BusinessLogicException, ResourceNotFoundException,
|
|
ValidationException)
|
|
|
|
|
|
class OrderNotFoundException(ResourceNotFoundException):
|
|
"""Raised when an order is not found."""
|
|
|
|
def __init__(self, order_identifier: str):
|
|
super().__init__(
|
|
resource_type="Order",
|
|
identifier=order_identifier,
|
|
message=f"Order '{order_identifier}' not found",
|
|
error_code="ORDER_NOT_FOUND",
|
|
)
|
|
|
|
|
|
class OrderAlreadyExistsException(ValidationException):
|
|
"""Raised when trying to create a duplicate order."""
|
|
|
|
def __init__(self, order_number: str):
|
|
super().__init__(
|
|
message=f"Order with number '{order_number}' already exists",
|
|
error_code="ORDER_ALREADY_EXISTS",
|
|
details={"order_number": order_number},
|
|
)
|
|
|
|
|
|
class OrderValidationException(ValidationException):
|
|
"""Raised when order data validation fails."""
|
|
|
|
def __init__(self, message: str, details: Optional[dict] = None):
|
|
super().__init__(
|
|
message=message, error_code="ORDER_VALIDATION_FAILED", details=details
|
|
)
|
|
|
|
|
|
class InvalidOrderStatusException(BusinessLogicException):
|
|
"""Raised when trying to set an invalid order status."""
|
|
|
|
def __init__(self, current_status: str, new_status: str):
|
|
super().__init__(
|
|
message=f"Cannot change order status from '{current_status}' to '{new_status}'",
|
|
error_code="INVALID_ORDER_STATUS_CHANGE",
|
|
details={"current_status": current_status, "new_status": new_status},
|
|
)
|
|
|
|
|
|
class OrderCannotBeCancelledException(BusinessLogicException):
|
|
"""Raised when order cannot be cancelled."""
|
|
|
|
def __init__(self, order_number: str, reason: str):
|
|
super().__init__(
|
|
message=f"Order '{order_number}' cannot be cancelled: {reason}",
|
|
error_code="ORDER_CANNOT_BE_CANCELLED",
|
|
details={"order_number": order_number, "reason": reason},
|
|
)
|