Repository URL to install this package:
|
Version:
0.4.190 ▾
|
lib-py-b2b
/
errors.py
|
|---|
from abc import abstractmethod
from typing import List, Dict
from lib_b2b.persistent import Persistable
class TechnicalError(Exception):
def __init__(self, message):
self.sanitized_message = message
self.message = ":[TechnicalError]: " + message
class BusinessError(Exception):
def __init__(self, message):
self.sanitized_message = message
self.message = ":[BusinessError]: " + message
class NotificationFailedError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class AcknowledgementUrlNotProvidedError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidLabelPrintRequestError(BusinessError):
def __init__(self, message):
super().__init__(message)
class LabelPrintError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class AddressValidationServiceError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class OrderNotFoundError(BusinessError):
def __init__(self, message):
super().__init__(message)
class OrderValidationError(BusinessError):
def __init__(self, message, reasons: List['RejectionReason']):
super().__init__(message)
self.reasons = reasons
class OrderLookupError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class CapturePaymentFailedError(BusinessError):
def __init__(self, message):
super().__init__(message)
class AcknowledgementFailedWarning(Exception):
def __init__(self, message):
super().__init__(message)
class AcknowledgementFailedError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidAddressError(BusinessError):
def __init__(self, message):
super().__init__(message)
class ShipNoticeFailedWarning(Exception):
def __init__(self, message):
super().__init__(message)
class VersionConflictError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ConditionCheckError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ShipNoticeFailedError(BusinessError):
def __init__(self, message):
super().__init__(message)
class ShipDateChangeError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ItemPricingNotFound(BusinessError):
def __init__(self, message):
super().__init__(message)
class ShipRateNotFound(BusinessError):
def __init__(self, message):
super().__init__(message)
class ShipZoneNotFound(TechnicalError):
def __init__(self, message):
super().__init__(message)
class CustomerNotFoundError(BusinessError):
def __init__(self, message):
super().__init__(message)
class CustomerLookupError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class InvalidAPIKey(TechnicalError):
def __init__(self, message):
super().__init__(message)
class InvalidShopifyDomain(BusinessError):
def __init__(self, message):
super().__init__(message)
class OrderExistsError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidCustomerItemError(BusinessError):
def __init__(self, message):
super().__init__(message)
class ShopifyOrderExistsError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidSignatureError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class TranslationError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class OrderFetchError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class OrderLineNotFoundError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class OrderFlowFailure(BusinessError):
def __init__(self, message):
super().__init__(message)
class OrderSaveError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class FulfillmentLookupError(Exception):
def __init__(self, message):
super().__init__(message)
class FulfillmentExistsError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class FulfillmentStatusError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidQuantityError(BusinessError):
def __init__(self, message):
super().__init__(message)
class NotFoundError(BusinessError):
def __init__(self, message):
super().__init__(message)
class OrderShipStatusError(BusinessError):
def __init__(self, message):
super().__init__(message)
class ContainerCreationError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ContainerContentsError(BusinessError):
def __init__(self, message):
super().__init__(message)
class InvalidPackageError(BusinessError):
def __init__(self, message):
super().__init__(message)
class ItemMismatchError(BusinessError):
def __init__(self, message):
super().__init__(message)
super().__init__(message)
class ConfigurationError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class FulfillmentFetchError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class FulfillmentSaveError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ShippingRateSaveError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class IntegrationError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class ChangeFailedError(TechnicalError):
def __init__(self, message):
super().__init__(message)
class OrderStatusChangeError(BusinessError):
def __init__(self, message):
super().__init__(message)
class RuleNotFound(BusinessError):
def __init__(self, message):
super().__init__(message)
class LineCancelError(BusinessError):
def __init__(self, line_id, message):
super().__init__(message)
self.line_id = line_id
class TaxLocationNotFoundError(BusinessError):
def __init__(self, message):
super().__init__(message)
class OrderCancelError(BusinessError):
def __init__(self, order_id, line_errors: List[LineCancelError], message):
_line_errs = "line_errors: \n\t{}".format('\n\t'.join([f'line_id: {e.line_id} - {e.message}' for e in line_errors]))
_msg = f"{message} :: order_id: {order_id}{' :: ' + _line_errs if line_errors else ''}"
super().__init__(_msg)
self.order_id = order_id
self.line_errors = line_errors
def __str__(self):
return self.message
class ChangeNotAllowed(BusinessError):
def __init__(self, message):
super().__init__(message)
class PolicyViolation(BusinessError):
def __init__(self, message):
super().__init__(message)
class NoticeRecord(Persistable):
def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
self.extra_data = extra_data
self.field = field
self.msg = msg
self.code = code
@property
@abstractmethod
def persist_as(self) -> str:
raise NotImplementedError
@classmethod
def from_dict(cls, data: dict):
return cls(
code=data.get('code'),
msg=data.get('msg'),
field=data.get('field'),
extra_data=data.get('extra_data')
)
def as_dict(self) -> dict:
return vars(self)
class ErrorRecord(NoticeRecord):
def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
super().__init__(code=code, msg=msg, field=field, extra_data=extra_data)
@property
def persist_as(self) -> str:
return 'errors'
class WarningRecord(NoticeRecord):
def __init__(self, code: str, msg: str, field: str = None, extra_data: Dict = None):
super().__init__(code=code, msg=msg, field=field, extra_data=extra_data)
@property
def persist_as(self) -> str:
return 'warnings'
class RejectionReason(Persistable):
def __init__(self, rejection_type: str, message: str):
self.rejection_type = rejection_type
self.message = message
@staticmethod
def from_dict(data: dict):
return RejectionReason(
rejection_type=data.get('rejection_type'),
message=data.get('message')
)
def as_dict(self) -> dict:
return vars(self)