From 7e3f1b88f5fb4fd0876c1dc2cb6030cd71a76ad3 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 3 Oct 2013 11:00:32 +0200 Subject: [PATCH] Add exceptions hierarchy. --- greenmine/base/exceptions.py | 58 +++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/greenmine/base/exceptions.py b/greenmine/base/exceptions.py index 73a122b7..f293165e 100644 --- a/greenmine/base/exceptions.py +++ b/greenmine/base/exceptions.py @@ -4,20 +4,58 @@ from rest_framework import exceptions from rest_framework import status -class PermissionDenied(exceptions.PermissionDenied): - pass - - -class NotFound(exceptions.APIException): - status_code = status.HTTP_404_NOT_FOUND - default_detail = "Not found" +class BaseException(exceptions.APIException): + status_code = status.HTTP_400_BAD_REQUEST + default_detail = 'Unexpected error' def __init__(self, detail=None): self.detail = detail or self.default_detail -class BadRequest(exceptions.ParseError): - default_detail = "Bad request" +class NotFound(BaseException): + """ + Exception used for not found objects. + """ + + status_code = status.HTTP_404_NOT_FOUND + default_detail = 'Not found.' -__all__ = ["PermissionDenied", "NotFound", "BadRequest"] +class BadRequest(BaseException): + """ + Exception used on bad arguments detected + on api view. + """ + default_detail = 'Wrong arguments.' + + +class WrongArguments(BaseException): + """ + Exception used on bad arguments detected + on service. This is same as `BadRequest`. + """ + default_detail = 'Wrong arguments.' + + +class PermissionDenied(exceptions.PermissionDenied): + """ + Compatibility subclass of restframework `PermissionDenied` + exception. + """ + pass + + +class InternalError(BaseException): + """ + Exception for internal errors. + """ + status_code = status.HTTP_500_INTERNAL_SERVER_ERROR + default_detail = "Internal server error" + + +class NotAuthenticated(exceptions.NotAuthenticated): + """ + Compatibility subclass of restframework `NotAuthenticated` + exception. + """ + pass