Commit 1f235380 by David Robinson

Merge pull request #65 from mtsgrd/query_errors

Improve error messages.
parents c540f3cc 967557b6
...@@ -16,12 +16,21 @@ import copy ...@@ -16,12 +16,21 @@ import copy
import collections import collections
class QueryResourceDoesNotExist(Exception): class QueryError(Exception):
'''Query error base class'''
def __init__(self, message, status_code=None):
super(QueryError, self).__init__(message)
if status_code:
self.status_code = status_code
class QueryResourceDoesNotExist(QueryError):
'''Query returned no results''' '''Query returned no results'''
pass pass
class QueryResourceMultipleResultsReturned(Exception): class QueryResourceMultipleResultsReturned(QueryError):
'''Query was supposed to return unique result, returned more than one''' '''Query was supposed to return unique result, returned more than one'''
pass pass
...@@ -163,9 +172,15 @@ class Queryset(object): ...@@ -163,9 +172,15 @@ class Queryset(object):
def get(self): def get(self):
results = self._fetch() results = self._fetch()
if len(results) == 0: if len(results) == 0:
raise QueryResourceDoesNotExist error_message = 'Query against %s returned no results' % (
self._manager.model_class.ENDPOINT_ROOT)
raise QueryResourceDoesNotExist(error_message,
status_code=404)
if len(results) >= 2: if len(results) >= 2:
raise QueryResourceMultipleResultsReturned error_message = 'Query against %s returned multiple results' % (
self._manager.model_class.ENDPOINT_ROOT)
raise QueryResourceMultipleResultsReturned(error_message,
status_code=404)
return results[0] return results[0]
def __repr__(self): def __repr__(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment