summaryrefslogtreecommitdiff
path: root/opendc/util/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'opendc/util/exceptions.py')
-rw-r--r--opendc/util/exceptions.py61
1 files changed, 61 insertions, 0 deletions
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