Calling reload on deleted / nonexistant documents raises DoesNotExist (#538)
This commit is contained in:
parent
bc08bea284
commit
6d5e7d9e81
@ -4,6 +4,7 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.8.7
|
Changes in 0.8.7
|
||||||
================
|
================
|
||||||
|
- Calling reload on deleted / nonexistant documents raises DoesNotExist (#538)
|
||||||
- Stop ensure_indexes running on a secondaries (#555)
|
- Stop ensure_indexes running on a secondaries (#555)
|
||||||
- Fix circular import issue with django auth (#531) (#545)
|
- Fix circular import issue with django auth (#531) (#545)
|
||||||
|
|
||||||
|
@ -2,6 +2,12 @@
|
|||||||
Upgrading
|
Upgrading
|
||||||
#########
|
#########
|
||||||
|
|
||||||
|
0.8.7
|
||||||
|
*****
|
||||||
|
|
||||||
|
Calling reload on deleted / nonexistant documents now raises a DoesNotExist
|
||||||
|
exception.
|
||||||
|
|
||||||
|
|
||||||
0.8.2 to 0.8.3
|
0.8.2 to 0.8.3
|
||||||
**************
|
**************
|
||||||
|
@ -12,6 +12,7 @@ from mongoengine.common import _import_class
|
|||||||
from mongoengine.base import (DocumentMetaclass, TopLevelDocumentMetaclass,
|
from mongoengine.base import (DocumentMetaclass, TopLevelDocumentMetaclass,
|
||||||
BaseDocument, BaseDict, BaseList,
|
BaseDocument, BaseDict, BaseList,
|
||||||
ALLOW_INHERITANCE, get_document)
|
ALLOW_INHERITANCE, get_document)
|
||||||
|
from mongoengine.errors import ValidationError
|
||||||
from mongoengine.queryset import OperationError, NotUniqueError, QuerySet
|
from mongoengine.queryset import OperationError, NotUniqueError, QuerySet
|
||||||
from mongoengine.connection import get_db, DEFAULT_CONNECTION_NAME
|
from mongoengine.connection import get_db, DEFAULT_CONNECTION_NAME
|
||||||
from mongoengine.context_managers import switch_db, switch_collection
|
from mongoengine.context_managers import switch_db, switch_collection
|
||||||
@ -452,14 +453,16 @@ class Document(BaseDocument):
|
|||||||
.. versionadded:: 0.1.2
|
.. versionadded:: 0.1.2
|
||||||
.. versionchanged:: 0.6 Now chainable
|
.. versionchanged:: 0.6 Now chainable
|
||||||
"""
|
"""
|
||||||
|
if not self.pk:
|
||||||
|
raise self.DoesNotExist("Document does not exist")
|
||||||
obj = self._qs.read_preference(ReadPreference.PRIMARY).filter(
|
obj = self._qs.read_preference(ReadPreference.PRIMARY).filter(
|
||||||
**self._object_key).limit(1).select_related(max_depth=max_depth)
|
**self._object_key).limit(1).select_related(max_depth=max_depth)
|
||||||
|
|
||||||
|
|
||||||
if obj:
|
if obj:
|
||||||
obj = obj[0]
|
obj = obj[0]
|
||||||
else:
|
else:
|
||||||
msg = "Reloaded document has been deleted"
|
raise self.DoesNotExist("Document does not exist")
|
||||||
raise OperationError(msg)
|
|
||||||
for field in self._fields_ordered:
|
for field in self._fields_ordered:
|
||||||
setattr(self, field, self._reload(field, obj[field]))
|
setattr(self, field, self._reload(field, obj[field]))
|
||||||
self._changed_fields = obj._changed_fields
|
self._changed_fields = obj._changed_fields
|
||||||
|
@ -409,6 +409,27 @@ class InstanceTest(unittest.TestCase):
|
|||||||
self.assertEqual(len(doc.embedded_field.list_field), 4)
|
self.assertEqual(len(doc.embedded_field.list_field), 4)
|
||||||
self.assertEqual(len(doc.embedded_field.dict_field), 2)
|
self.assertEqual(len(doc.embedded_field.dict_field), 2)
|
||||||
|
|
||||||
|
def test_reload_doesnt_exist(self):
|
||||||
|
class Foo(Document):
|
||||||
|
pass
|
||||||
|
|
||||||
|
f = Foo()
|
||||||
|
try:
|
||||||
|
f.reload()
|
||||||
|
except Foo.DoesNotExist:
|
||||||
|
pass
|
||||||
|
except Exception as ex:
|
||||||
|
self.assertFalse("Threw wrong exception")
|
||||||
|
|
||||||
|
f.save()
|
||||||
|
f.delete()
|
||||||
|
try:
|
||||||
|
f.reload()
|
||||||
|
except Foo.DoesNotExist:
|
||||||
|
pass
|
||||||
|
except Exception as ex:
|
||||||
|
self.assertFalse("Threw wrong exception")
|
||||||
|
|
||||||
def test_dictionary_access(self):
|
def test_dictionary_access(self):
|
||||||
"""Ensure that dictionary-style field access works properly.
|
"""Ensure that dictionary-style field access works properly.
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user