From 86a50a4f6df9ece982743a3b7ca510846d248909 Mon Sep 17 00:00:00 2001 From: leonoverweel Date: Tue, 24 Jan 2017 12:05:15 +0100 Subject: Initial commit --- opendc/util/exceptions.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 opendc/util/exceptions.py (limited to 'opendc/util/exceptions.py') diff --git a/opendc/util/exceptions.py b/opendc/util/exceptions.py new file mode 100644 index 00000000..56a04ab9 --- /dev/null +++ b/opendc/util/exceptions.py @@ -0,0 +1,61 @@ +class RequestInitializationError(Exception): + """Raised when a Request cannot successfully be initialized""" + +class UnimplementedEndpointError(RequestInitializationError): + """Raised when a Request path does not point to a module.""" + +class MissingRequestParameterError(RequestInitializationError): + """Raised when a Request does not contain one or more required parameters.""" + +class UnsupportedMethodError(RequestInitializationError): + """Raised when a Request does not use a supported REST method. + + The method must be in all-caps, supported by REST, and implemented by the module. + """ + +class AuthorizationTokenError(RequestInitializationError): + """Raised when an authorization token is not correctly verified.""" + +class ForeignKeyError(Exception): + """Raised when a foreign key constraint is not met.""" + +class RowNotFoundError(Exception): + """Raised when a database row is not found.""" + + def __init__(self, table_name): + super(RowNotFoundError, self).__init__( + 'Row in `{}` table not found.'.format(table_name) + ) + + self.table_name = table_name + +class ParameterError(Exception): + """Raised when a paramter is either missing or incorrectly typed.""" + +class IncorrectParameterError(ParameterError): + """Raised when a parameter is of the wrong type.""" + + def __init__(self, parameter_name, parameter_location): + super(IncorrectParameterError, self).__init__( + 'Incorrectly typed `{}` {} parameter.'.format( + parameter_name, + parameter_location + ) + ) + + self.parameter_name = parameter_name + self.parameter_location = parameter_location + +class MissingParameterError(ParameterError): + """Raised when a parameter is missing.""" + + def __init__(self, parameter_name, parameter_location): + super(MissingParameterError, self).__init__( + 'Missing required `{}` {} parameter.'.format( + parameter_name, + parameter_location + ) + ) + + self.parameter_name = parameter_name + self.parameter_location = parameter_location -- cgit v1.2.3