From 40df08c74c44546fd04f23f1cba4da0f5f162d0e Mon Sep 17 00:00:00 2001 From: Colin Howe Date: Sun, 29 May 2011 13:33:00 +0100 Subject: [PATCH] Fix QuerySet.ensure_index for new index specs --- mongoengine/queryset.py | 10 +++++++--- tests/queryset.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index 68afefca..2de15ed4 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -376,9 +376,13 @@ class QuerySet(object): construct a multi-field index); keys may be prefixed with a **+** or a **-** to determine the index ordering """ - index_list = QuerySet._build_index_spec(self._document, key_or_list) - self._collection.ensure_index(index_list, drop_dups=drop_dups, - background=background) + index_spec = QuerySet._build_index_spec(self._document, key_or_list) + self._collection.ensure_index( + index_spec['fields'], + drop_dups=drop_dups, + background=background, + sparse=index_spec.get('sparse', False), + unique=index_spec.get('unique', False)) return self @classmethod diff --git a/tests/queryset.py b/tests/queryset.py index 081ffb32..8d046902 100644 --- a/tests/queryset.py +++ b/tests/queryset.py @@ -2099,6 +2099,22 @@ class QuerySetTest(unittest.TestCase): Number.drop_collection() + def test_ensure_index(self): + """Ensure that manual creation of indexes works. + """ + class Comment(Document): + message = StringField() + + Comment.objects.ensure_index('message') + + info = Comment.objects._collection.index_information() + info = [(value['key'], + value.get('unique', False), + value.get('sparse', False)) + for key, value in info.iteritems()] + self.assertTrue(([('_types', 1), ('message', 1)], False, False) in info) + + class QTest(unittest.TestCase): def setUp(self):