Coverage for core\exceptions.py: 79%

24 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-10-17 16:50 +0800

1from ninja.errors import HttpError 

2 

3class APIException(HttpError): 

4 def __init__(self, status_code: int, message: str, code: str = "ERROR"): 

5 super().__init__(status_code, message) 

6 self.code = code 

7 self.message = message 

8 

9class NotFoundException(APIException): 

10 def __init__(self, message: str = "Resource not found"): 

11 super().__init__(status_code=404, message=message, code="NOT_FOUND") 

12 

13class PermissionDeniedException(APIException): 

14 def __init__(self, message: str = "Permission denied"): 

15 super().__init__(status_code=403, message=message, code="PERMISSION_DENIED") 

16 

17class BadRequestException(APIException): 

18 def __init__(self, message: str = "Bad request"): 

19 super().__init__(status_code=400, message=message, code="BAD_REQUEST") 

20 

21class ConflictException(APIException): 

22 def __init__(self, message: str = "Resource conflict"): 

23 super().__init__(status_code=409, message=message, code="CONFLICT") 

24 

25class UnauthorizedException(APIException): 

26 def __init__(self, message: str = "Authentication required"): 

27 super().__init__(status_code=401, message=message, code="UNAUTHORIZED") 

28 

29class ForbiddenException(APIException): 

30 def __init__(self, message: str = "Access denied"): 

31 super().__init__(status_code=403, message=message, code="FORBIDDEN")