diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index d65c8cd2..89eb9afa 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -940,7 +940,7 @@ class BaseQuerySet(object): .. deprecated:: Ignored with PyMongo 3+ """ if IS_PYMONGO_3: - msg = ("snapshot is deprecated as it has no impact when using PyMongo 3+.") + msg = "snapshot is deprecated as it has no impact when using PyMongo 3+." warnings.warn(msg, DeprecationWarning) queryset = self.clone() queryset._snapshot = enabled @@ -966,7 +966,7 @@ class BaseQuerySet(object): .. deprecated:: Ignored with PyMongo 3+ """ if IS_PYMONGO_3: - msg = ("slave_okay is deprecated as it has no impact when using PyMongo 3+.") + msg = "slave_okay is deprecated as it has no impact when using PyMongo 3+." warnings.warn(msg, DeprecationWarning) queryset = self.clone() queryset._slave_okay = enabled diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index e8cd2721..c43c4b40 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -128,20 +128,15 @@ def query(_doc_cls=None, _field_operation=False, **query): mongo_query[key].update(value) # $maxDistance needs to come last - convert to SON value_dict = mongo_query[key] - if ('$maxDistance' in value_dict and '$near' in value_dict): + if '$maxDistance' in value_dict and '$near' in value_dict: value_son = SON() if isinstance(value_dict['$near'], dict): for k, v in value_dict.iteritems(): if k == '$maxDistance': continue value_son[k] = v - if (get_connection().max_wire_version <= 1): - value_son['$maxDistance'] = value_dict[ - '$maxDistance'] - else: - value_son['$near'] = SON(value_son['$near']) - value_son['$near'][ - '$maxDistance'] = value_dict['$maxDistance'] + value_son['$near'] = SON(value_son['$near']) + value_son['$near']['$maxDistance'] = value_dict['$maxDistance'] else: for k, v in value_dict.iteritems(): if k == '$maxDistance': diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index b757ddda..65d84305 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -708,6 +708,11 @@ class QuerySetTest(unittest.TestCase): Blog.drop_collection() + # get MongoDB version info + connection = get_connection() + info = connection.test.command('buildInfo') + mongodb_version = tuple([int(i) for i in info['version'].split('.')]) + # Recreates the collection self.assertEqual(0, Blog.objects.count()) @@ -724,7 +729,7 @@ class QuerySetTest(unittest.TestCase): blogs.append(Blog(title="post %s" % i, posts=[post1, post2])) Blog.objects.insert(blogs, load_bulk=False) - if (get_connection().max_wire_version <= 1): + if mongodb_version < (2, 6): self.assertEqual(q, 1) else: # profiling logs each doc now in the bulk op @@ -737,7 +742,7 @@ class QuerySetTest(unittest.TestCase): self.assertEqual(q, 0) Blog.objects.insert(blogs) - if (get_connection().max_wire_version <= 1): + if mongodb_version < (2, 6): self.assertEqual(q, 2) # 1 for insert, and 1 for in bulk fetch else: # 99 for insert, and 1 for in bulk fetch @@ -869,8 +874,10 @@ class QuerySetTest(unittest.TestCase): self.assertEqual(q, 3) + @skip_pymongo3 def test_slave_okay(self): - """Ensures that a query can take slave_okay syntax + """Ensures that a query can take slave_okay syntax. + Useless with PyMongo 3+ as well as with MongoDB 3+. """ person1 = self.Person(name="User A", age=20) person1.save()