From 89646439e7afbffe7209d218f454ee0fa03a2f14 Mon Sep 17 00:00:00 2001 From: Deepak Thukral Date: Wed, 10 Nov 2010 21:02:59 +0100 Subject: [PATCH 1/2] fixed typo in error message --- mongoengine/queryset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index e46380b6..55201009 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -78,7 +78,7 @@ class SimplificationVisitor(QNodeVisitor): # to a single field intersection = ops.intersection(query_ops) if intersection: - msg = 'Duplicate query contitions: ' + msg = 'Duplicate query conditions: ' raise InvalidQueryError(msg + ', '.join(intersection)) query_ops.update(ops) @@ -179,7 +179,7 @@ class QueryCompilerVisitor(QNodeVisitor): # once to a single field intersection = current_ops.intersection(new_ops) if intersection: - msg = 'Duplicate query contitions: ' + msg = 'Duplicate query conditions: ' raise InvalidQueryError(msg + ', '.join(intersection)) # Right! We've got two non-overlapping dicts of operations! From b12c34334ccfeef41b948eef6bedae22c7254bdf Mon Sep 17 00:00:00 2001 From: Deepak Thukral Date: Thu, 18 Nov 2010 20:44:51 +0100 Subject: [PATCH 2/2] added test case for issue 103 --- tests/queryset.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tests/queryset.py b/tests/queryset.py index 8b25524e..e130ecef 100644 --- a/tests/queryset.py +++ b/tests/queryset.py @@ -539,33 +539,47 @@ class QuerySetTest(unittest.TestCase): """Ensure that Q objects may be used to query for documents. """ class BlogPost(Document): + title = StringField() publish_date = DateTimeField() published = BooleanField() BlogPost.drop_collection() - post1 = BlogPost(publish_date=datetime(2010, 1, 8), published=False) + post1 = BlogPost(title='Test 1', publish_date=datetime(2010, 1, 8), published=False) post1.save() - post2 = BlogPost(publish_date=datetime(2010, 1, 15), published=True) + post2 = BlogPost(title='Test 2', publish_date=datetime(2010, 1, 15), published=True) post2.save() - post3 = BlogPost(published=True) + post3 = BlogPost(title='Test 3', published=True) post3.save() - post4 = BlogPost(publish_date=datetime(2010, 1, 8)) + post4 = BlogPost(title='Test 4', publish_date=datetime(2010, 1, 8)) post4.save() - post5 = BlogPost(publish_date=datetime(2010, 1, 15)) + post5 = BlogPost(title='Test 1', publish_date=datetime(2010, 1, 15)) post5.save() - post6 = BlogPost(published=False) + post6 = BlogPost(title='Test 1', published=False) post6.save() # Check ObjectId lookup works obj = BlogPost.objects(id=post1.id).first() self.assertEqual(obj, post1) + # Check Q object combination with one does not exist + q = BlogPost.objects(Q(title='Test 5') | Q(published=True)) + posts = [post.id for post in q] + + published_posts = (post2, post3) + self.assertTrue(all(obj.id in posts for obj in published_posts)) + + q = BlogPost.objects(Q(title='Test 1') | Q(published=True)) + posts = [post.id for post in q] + published_posts = (post1, post2, post3, post5, post6) + self.assertTrue(all(obj.id in posts for obj in published_posts)) + + # Check Q object combination date = datetime(2010, 1, 10) q = BlogPost.objects(Q(publish_date__lte=date) | Q(published=True))