Fixed weakref being valid after reload (#374)

This commit is contained in:
Ross Lawley 2013-06-21 11:04:29 +00:00
parent e6374ab425
commit 9867e918fa
3 changed files with 28 additions and 0 deletions

View File

@ -4,6 +4,7 @@ Changelog
Changes in 0.8.3 Changes in 0.8.3
================ ================
- Fixed weakref being valid after reload (#374)
- Fixed queryset.get() respecting no_dereference (#373) - Fixed queryset.get() respecting no_dereference (#373)
- Added full_result kwarg to update (#380) - Added full_result kwarg to update (#380)

View File

@ -480,6 +480,7 @@ class Document(BaseDocument):
value = [self._reload(key, v) for v in value] value = [self._reload(key, v) for v in value]
value = BaseList(value, self, key) value = BaseList(value, self, key)
elif isinstance(value, (EmbeddedDocument, DynamicEmbeddedDocument)): elif isinstance(value, (EmbeddedDocument, DynamicEmbeddedDocument)):
value._instance = None
value._changed_fields = [] value._changed_fields = []
return value return value

View File

@ -1613,6 +1613,32 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(message.authors[1].name, "Ross") self.assertEqual(message.authors[1].name, "Ross")
self.assertEqual(message.authors[2].name, "Adam") self.assertEqual(message.authors[2].name, "Adam")
def test_reload_embedded_docs_instance(self):
class SubDoc(EmbeddedDocument):
val = IntField()
class Doc(Document):
embedded = EmbeddedDocumentField(SubDoc)
doc = Doc(embedded=SubDoc(val=0)).save()
doc.reload()
self.assertEqual(doc.pk, doc.embedded._instance.pk)
def test_reload_list_embedded_docs_instance(self):
class SubDoc(EmbeddedDocument):
val = IntField()
class Doc(Document):
embedded = ListField(EmbeddedDocumentField(SubDoc))
doc = Doc(embedded=[SubDoc(val=0)]).save()
doc.reload()
self.assertEqual(doc.pk, doc.embedded[0]._instance.pk)
def test_order_by(self): def test_order_by(self):
"""Ensure that QuerySets may be ordered. """Ensure that QuerySets may be ordered.
""" """