Source code for galaxy.exceptions

"""
Custom exceptions for Galaxy
"""

from galaxy import eggs
eggs.require( "Paste" )

from paste import httpexceptions
from ..exceptions import error_codes


[docs]class MessageException( Exception ): """ Exception to make throwing errors from deep in controllers easier. """ # status code to be set when used with API. status_code = 400 # Error code information embedded into API json responses. err_code = error_codes.UNKNOWN def __init__( self, err_msg=None, type="info", **extra_error_info ): self.err_msg = err_msg or self.err_code.default_error_message self.type = type self.extra_error_info = extra_error_info def __str__( self ): return self.err_msg
[docs]class ItemDeletionException( MessageException ): pass
[docs]class ObjectInvalid( Exception ): """ Accessed object store ID is invalid """ pass # Please keep the exceptions ordered by status code
[docs]class ActionInputError( MessageException ): status_code = 400 err_code = error_codes.USER_REQUEST_INVALID_PARAMETER def __init__( self, err_msg, type="error" ): super( ActionInputError, self ).__init__( err_msg, type )
[docs]class DuplicatedSlugException( MessageException ): status_code = 400 err_code = error_codes.USER_SLUG_DUPLICATE
[docs]class DuplicatedIdentifierException( MessageException ): status_code = 400 err_code = error_codes.USER_IDENTIFIER_DUPLICATE
[docs]class ObjectAttributeInvalidException( MessageException ): status_code = 400 err_code = error_codes.USER_OBJECT_ATTRIBUTE_INVALID
[docs]class ObjectAttributeMissingException( MessageException ): status_code = 400 err_code = error_codes.USER_OBJECT_ATTRIBUTE_MISSING
[docs]class MalformedId( MessageException ): status_code = 400 err_code = error_codes.MALFORMED_ID
[docs]class UnknownContentsType( MessageException ): status_code = 400 err_code = error_codes.UNKNOWN_CONTENTS_TYPE
[docs]class RequestParameterMissingException( MessageException ): status_code = 400 err_code = error_codes.USER_REQUEST_MISSING_PARAMETER
[docs]class ToolMetaParameterException( MessageException ): status_code = 400 err_code = error_codes.USER_TOOL_META_PARAMETER_PROBLEM
[docs]class RequestParameterInvalidException( MessageException ): status_code = 400 err_code = error_codes.USER_REQUEST_INVALID_PARAMETER
[docs]class AuthenticationFailed( MessageException ): status_code = 401 err_code = error_codes.USER_AUTHENTICATION_FAILED
[docs]class AuthenticationRequired( MessageException ): status_code = 403 #TODO: as 401 and send WWW-Authenticate: ??? err_code = error_codes.USER_NO_API_KEY
[docs]class ItemAccessibilityException( MessageException ): status_code = 403 err_code = error_codes.USER_CANNOT_ACCESS_ITEM
[docs]class ItemOwnershipException( MessageException ): status_code = 403 err_code = error_codes.USER_DOES_NOT_OWN_ITEM
[docs]class ConfigDoesNotAllowException( MessageException ): status_code = 403 err_code = error_codes.CONFIG_DOES_NOT_ALLOW
[docs]class InsufficientPermissionsException( MessageException ): status_code = 403 err_code = error_codes.INSUFFICIENT_PERMISSIONS
[docs]class AdminRequiredException( MessageException ): status_code = 403 err_code = error_codes.ADMIN_REQUIRED
[docs]class ObjectNotFound( MessageException ): """ Accessed object was not found """ status_code = 404 err_code = error_codes.USER_OBJECT_NOT_FOUND
[docs]class DeprecatedMethod( MessageException ): """ Method (or a particular form/arg signature) has been removed and won't be available later """ status_code = 404 #TODO:?? 410 Gone? err_code = error_codes.DEPRECATED_API_CALL
[docs]class Conflict( MessageException ): status_code = 409 err_code = error_codes.CONFLICT
[docs]class ConfigurationError( Exception ): status_code = 500 err_code = error_codes.CONFIG_ERROR
[docs]class InconsistentDatabase ( MessageException ): status_code = 500 err_code = error_codes.INCONSISTENT_DATABASE
[docs]class InternalServerError ( MessageException ): status_code = 500 err_code = error_codes.INTERNAL_SERVER_ERROR
[docs]class NotImplemented ( MessageException ): status_code = 501 err_code = error_codes.NOT_IMPLEMENTED