Update index spec generation so its not destructive (MongoEngine/mongoengine#113)
This commit is contained in:
parent
53339c7c72
commit
a8e787c120
@ -2,6 +2,10 @@
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Changes in 0.7.X
|
||||||
|
================
|
||||||
|
- Update index spec generation so its not destructive (MongoEngine/mongoengine#113)
|
||||||
|
|
||||||
Changes in 0.7.1
|
Changes in 0.7.1
|
||||||
=================
|
=================
|
||||||
- Fixed index spec inheritance (MongoEngine/mongoengine#111)
|
- Fixed index spec inheritance (MongoEngine/mongoengine#111)
|
||||||
|
@ -398,6 +398,7 @@ class QuerySet(object):
|
|||||||
or a **-** to determine the index ordering
|
or a **-** to determine the index ordering
|
||||||
"""
|
"""
|
||||||
index_spec = QuerySet._build_index_spec(self._document, key_or_list)
|
index_spec = QuerySet._build_index_spec(self._document, key_or_list)
|
||||||
|
index_spec = index_spec.copy()
|
||||||
fields = index_spec.pop('fields')
|
fields = index_spec.pop('fields')
|
||||||
index_spec['drop_dups'] = drop_dups
|
index_spec['drop_dups'] = drop_dups
|
||||||
index_spec['background'] = background
|
index_spec['background'] = background
|
||||||
@ -472,7 +473,9 @@ class QuerySet(object):
|
|||||||
|
|
||||||
# Ensure document-defined indexes are created
|
# Ensure document-defined indexes are created
|
||||||
if self._document._meta['index_specs']:
|
if self._document._meta['index_specs']:
|
||||||
for spec in self._document._meta['index_specs']:
|
index_spec = self._document._meta['index_specs']
|
||||||
|
for spec in index_spec:
|
||||||
|
spec = spec.copy()
|
||||||
fields = spec.pop('fields')
|
fields = spec.pop('fields')
|
||||||
types_indexed = types_indexed or includes_types(fields)
|
types_indexed = types_indexed or includes_types(fields)
|
||||||
opts = index_opts.copy()
|
opts = index_opts.copy()
|
||||||
|
@ -688,6 +688,25 @@ class DocumentTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(A._meta['index_specs'], B._meta['index_specs'])
|
self.assertEqual(A._meta['index_specs'], B._meta['index_specs'])
|
||||||
|
|
||||||
|
def test_build_index_spec_is_not_destructive(self):
|
||||||
|
|
||||||
|
class MyDoc(Document):
|
||||||
|
keywords = StringField()
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
'indexes': ['keywords'],
|
||||||
|
'allow_inheritance': False
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertEqual(MyDoc._meta['index_specs'],
|
||||||
|
[{'fields': [('keywords', 1)]}])
|
||||||
|
|
||||||
|
# Force index creation
|
||||||
|
MyDoc.objects._ensure_indexes()
|
||||||
|
|
||||||
|
self.assertEqual(MyDoc._meta['index_specs'],
|
||||||
|
[{'fields': [('keywords', 1)]}])
|
||||||
|
|
||||||
def test_db_field_load(self):
|
def test_db_field_load(self):
|
||||||
"""Ensure we load data correctly
|
"""Ensure we load data correctly
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user