diff --git a/mongoengine/document.py b/mongoengine/document.py index c5498750..70abadcc 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -16,7 +16,8 @@ from mongoengine.base import ( ALLOW_INHERITANCE, get_document ) -from mongoengine.errors import InvalidQueryError, InvalidDocumentError +from mongoengine.errors import (InvalidQueryError, InvalidDocumentError, + SaveConditionError) from mongoengine.python_support import IS_PYMONGO_3 from mongoengine.queryset import (OperationError, NotUniqueError, QuerySet, transform) @@ -359,8 +360,8 @@ class Document(BaseDocument): last_error = collection.update(select_dict, update_query, upsert=upsert, **write_concern) if not upsert and last_error['nModified'] == 0: - raise OperationError('Race condition preventing' - ' document update detected') + raise SaveConditionError('Race condition preventing' + ' document update detected') created = is_new_object(last_error) if cascade is None: diff --git a/mongoengine/errors.py b/mongoengine/errors.py index b7fb7632..2c5c2946 100644 --- a/mongoengine/errors.py +++ b/mongoengine/errors.py @@ -41,6 +41,10 @@ class NotUniqueError(OperationError): pass +class SaveConditionError(OperationError): + pass + + class FieldDoesNotExist(Exception): """Raised when trying to set a field not declared in a :class:`~mongoengine.Document`