diff --git a/umongo/__init__.py b/umongo/__init__.py index 9e2a5c21..ab982814 100644 --- a/umongo/__init__.py +++ b/umongo/__init__.py @@ -22,6 +22,7 @@ DeleteError, NotCreatedError, FieldNotLoadedError, + NoneReferenceError, UnknownFieldInDBError, ) from . import fields, validate @@ -58,6 +59,7 @@ 'DeleteError', 'NotCreatedError', 'FieldNotLoadedError', + 'NoneReferenceError', 'UnknownFieldInDBError', 'fields', diff --git a/umongo/exceptions.py b/umongo/exceptions.py index 89679db9..43c7b3d6 100644 --- a/umongo/exceptions.py +++ b/umongo/exceptions.py @@ -46,5 +46,9 @@ class FieldNotLoadedError(UMongoError): """Accessing a field not loaded after partial load""" +class NoneReferenceError(UMongoError): + """Retrieving a None reference""" + + class UnknownFieldInDBError(UMongoError): """Data from database contains unknown field""" diff --git a/umongo/frameworks/motor_asyncio.py b/umongo/frameworks/motor_asyncio.py index 5780b336..ffcd2a0a 100644 --- a/umongo/frameworks/motor_asyncio.py +++ b/umongo/frameworks/motor_asyncio.py @@ -9,7 +9,9 @@ from ..document import DocumentImplementation from ..data_proxy import missing from ..data_objects import Reference -from ..exceptions import NotCreatedError, UpdateError, ValidationError, DeleteError +from ..exceptions import ( + NotCreatedError, UpdateError, DeleteError, ValidationError, NoneReferenceError +) from ..fields import ReferenceField, ListField, EmbeddedField from ..query_mapper import map_query @@ -356,7 +358,7 @@ def __init__(self, *args, **kwargs): async def fetch(self, no_data=False, force_reload=False): if not self._document or force_reload: if self.pk is None: - raise ReferenceError('Cannot retrieve a None Reference') + raise NoneReferenceError('Cannot retrieve a None Reference') self._document = await self.document_cls.find_one(self.pk) if not self._document: raise ValidationError(self.error_messages['not_found'].format( diff --git a/umongo/frameworks/pymongo.py b/umongo/frameworks/pymongo.py index a7c83113..a977af7f 100644 --- a/umongo/frameworks/pymongo.py +++ b/umongo/frameworks/pymongo.py @@ -6,7 +6,9 @@ from ..document import DocumentImplementation from ..data_proxy import missing from ..data_objects import Reference -from ..exceptions import NotCreatedError, UpdateError, DeleteError, ValidationError +from ..exceptions import ( + NotCreatedError, UpdateError, DeleteError, ValidationError, NoneReferenceError +) from ..fields import ReferenceField, ListField, EmbeddedField from ..query_mapper import map_query @@ -291,7 +293,7 @@ def __init__(self, *args, **kwargs): def fetch(self, no_data=False, force_reload=False): if not self._document or force_reload: if self.pk is None: - raise ReferenceError('Cannot retrieve a None Reference') + raise NoneReferenceError('Cannot retrieve a None Reference') self._document = self.document_cls.find_one(self.pk) if not self._document: raise ValidationError(self.error_messages['not_found'].format( diff --git a/umongo/frameworks/txmongo.py b/umongo/frameworks/txmongo.py index 0a82b787..5c5c9ddf 100644 --- a/umongo/frameworks/txmongo.py +++ b/umongo/frameworks/txmongo.py @@ -8,7 +8,9 @@ from ..document import DocumentImplementation from ..data_proxy import missing from ..data_objects import Reference -from ..exceptions import NotCreatedError, UpdateError, DeleteError, ValidationError +from ..exceptions import ( + NotCreatedError, UpdateError, DeleteError, ValidationError, NoneReferenceError +) from ..fields import ReferenceField, ListField, EmbeddedField from ..query_mapper import map_query @@ -297,7 +299,7 @@ def __init__(self, *args, **kwargs): def fetch(self, no_data=False, force_reload=False): if not self._document or force_reload: if self.pk is None: - raise ReferenceError('Cannot retrieve a None Reference') + raise NoneReferenceError('Cannot retrieve a None Reference') self._document = yield self.document_cls.find_one(self.pk) if not self._document: raise ValidationError(self.error_messages['not_found'].format(