sbt-idp/cope2n-api/fwd_api/exception/exceptions.py
2024-01-11 18:27:34 +07:00

135 lines
4.4 KiB
Python
Executable File

from rest_framework import status
from rest_framework.exceptions import APIException
from fwd import settings
class GeneralException(APIException):
detail_with_arg = "error {}"
default_code = 999
def __init__(self, detail=None, code=None, excArgs=None):
code = code if code is not None else self.default_code
if excArgs is None:
super().__init__(detail, code)
else:
super().__init__(self.detail_with_arg, code)
self.excArgs = excArgs
class NotAuthenticatedException(GeneralException):
status_code = status.HTTP_401_UNAUTHORIZED
default_code = 4010
default_detail = 'Authentication failed. Username or password is incorrect'
detail_with_arg = 'Authentication failed. Username or password is incorrect'
class TrialOneException(GeneralException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4032
default_detail = 'You have signed up for a trial plan before. Please contact sales for more information'
class PermissionDeniedException(GeneralException):
status_code = status.HTTP_403_FORBIDDEN
default_code = 4031
default_detail = 'Action refuse. Dont have permission to perform this action'
class ServiceUnavailableException(GeneralException):
status_code = 503
default_code = 5030
default_detail = 'Service temporarily unavailable, try again later.'
class ServiceTimeoutException(GeneralException):
status_code = 503
default_code = 5031
default_detail = 'Timeout waiting for the result, try again later.'
detail_with_arg = '{}'
class LockedEntityException(GeneralException):
status_code = status.HTTP_423_LOCKED
default_code = 4231
default_detail = 'Locked Entity'
detail_with_arg = '{} has been locked or inactive'
class InvalidException(GeneralException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4001
default_detail = 'Data Invalid'
detail_with_arg = '{} invalid'
class RequiredFieldException(GeneralException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4002
default_detail = 'Field required'
detail_with_arg = '{} param is required'
class RequiredColumnException(GeneralException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4003
default_detail = 'Collumns required'
detail_with_arg = '{} collumns are required'
class DuplicateEntityException(GeneralException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4041
default_detail = 'Data duplicate'
detail_with_arg = '{} duplicate'
class NotFoundException(GeneralException):
status_code = status.HTTP_404_NOT_FOUND
default_code = 4042
default_detail = 'Data not found'
detail_with_arg = '{} not found'
class NumberOfBoxLimitReachedException(InvalidException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4004
default_detail = 'Number of box limit reached : 20 for data boxs and 3 for anchor boxs'
detail_with_arg = 'Number of box limit reached : 20 for data boxs and 3 for anchor boxs'
class BadGatewayException(GeneralException):
status_code = status.HTTP_502_BAD_GATEWAY
default_code = 5020
default_detail = 'Bad gateway. Please contact administrator to support'
detail_with_arg = 'Bad gateway. Please contact administrator to support'
class FileFormatInvalidException(InvalidException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4006
default_detail = 'File invalid type'
detail_with_arg = 'File must have type {}'
class FileContentInvalidException(InvalidException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4007
default_detail = 'Invalid content file'
detail_with_arg = 'One of the files is broken, please select other file and try again'
class InvalidDecompressedSizeException(InvalidException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 4008
default_detail = 'Invalid decompessed file'
detail_with_arg = '{}x{} is not valid, maximum size for one side is {}'
class TokenExpiredException(GeneralException):
status_code = status.HTTP_401_UNAUTHORIZED
default_code = 4106
default_detail = 'Token expired or invalid'
detail_with_arg = 'Token expired or invalid'
class LimitReachedException(InvalidException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 40001
default_detail = 'Data reach limit'
detail_with_arg = 'Limit reached. {} limit at {} {}'