Merge pull request #823 from mmelliso/mmelliso/fix#812
Ensure Indexes before Each Save (Resolves #812)
This commit is contained in:
commit
0ffe79d76c
@ -5,7 +5,8 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.9.X - DEV
|
Changes in 0.9.X - DEV
|
||||||
======================
|
======================
|
||||||
- Generate Unique Indicies for Lists of EmbeddedDocuments #358
|
- Ensure Indexes before Each Save #812
|
||||||
|
- Generate Unique Indices for Lists of EmbeddedDocuments #358
|
||||||
- Sparse fields #515
|
- Sparse fields #515
|
||||||
- write_concern not in params of Collection#remove #801
|
- write_concern not in params of Collection#remove #801
|
||||||
- Better BaseDocument equality check when not saved #798
|
- Better BaseDocument equality check when not saved #798
|
||||||
|
@ -285,6 +285,8 @@ class Document(BaseDocument):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
collection = self._get_collection()
|
collection = self._get_collection()
|
||||||
|
if self._meta.get('auto_create_index', True):
|
||||||
|
self.ensure_indexes()
|
||||||
if created:
|
if created:
|
||||||
if force_insert:
|
if force_insert:
|
||||||
object_id = collection.insert(doc, **write_concern)
|
object_id = collection.insert(doc, **write_concern)
|
||||||
|
@ -18,7 +18,7 @@ __all__ = ("IndexesTest", )
|
|||||||
class IndexesTest(unittest.TestCase):
|
class IndexesTest(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
connect(db='mongoenginetest')
|
self.connection = connect(db='mongoenginetest')
|
||||||
self.db = get_db()
|
self.db = get_db()
|
||||||
|
|
||||||
class Person(Document):
|
class Person(Document):
|
||||||
@ -795,6 +795,33 @@ class IndexesTest(unittest.TestCase):
|
|||||||
key = indexes["title_text"]["key"]
|
key = indexes["title_text"]["key"]
|
||||||
self.assertTrue(('_fts', 'text') in key)
|
self.assertTrue(('_fts', 'text') in key)
|
||||||
|
|
||||||
|
def test_indexes_after_database_drop(self):
|
||||||
|
"""
|
||||||
|
Test to ensure that indexes are re-created on a collection even
|
||||||
|
after the database has been dropped.
|
||||||
|
|
||||||
|
Issue #812
|
||||||
|
"""
|
||||||
|
class BlogPost(Document):
|
||||||
|
title = StringField()
|
||||||
|
slug = StringField(unique=True)
|
||||||
|
|
||||||
|
BlogPost.drop_collection()
|
||||||
|
|
||||||
|
# Create Post #1
|
||||||
|
post1 = BlogPost(title='test1', slug='test')
|
||||||
|
post1.save()
|
||||||
|
|
||||||
|
# Drop the Database
|
||||||
|
self.connection.drop_database(BlogPost._get_db().name)
|
||||||
|
|
||||||
|
# Re-create Post #1
|
||||||
|
post1 = BlogPost(title='test1', slug='test')
|
||||||
|
post1.save()
|
||||||
|
|
||||||
|
# Create Post #2
|
||||||
|
post2 = BlogPost(title='test2', slug='test')
|
||||||
|
self.assertRaises(NotUniqueError, post2.save)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user