Author: Alex Date: 2010-06-22 13:08:38 -0500 (Tue, 22 Jun 2010) New Revision: 13380
Modified: django/branches/soc2010/query-refactor/django/contrib/mongodb/compiler.py django/branches/soc2010/query-refactor/tests/regressiontests/mongodb/tests.py Log: [soc2010/query-refactor] Fixed __isnull. Modified: django/branches/soc2010/query-refactor/django/contrib/mongodb/compiler.py =================================================================== --- django/branches/soc2010/query-refactor/django/contrib/mongodb/compiler.py 2010-06-22 02:58:45 UTC (rev 13379) +++ django/branches/soc2010/query-refactor/django/contrib/mongodb/compiler.py 2010-06-22 18:08:38 UTC (rev 13380) @@ -6,9 +6,9 @@ # TODO: ... class SQLCompiler(object): LOOKUP_TYPES = { - "exact": lambda params: params[0], - "lt": lambda params: {"$lt": params[0]}, - "isnull": lambda params: params[0] + "exact": lambda params, value_annotation, negated: params[0], + "lt": lambda params, value_annotation, negated: {"$lt": params[0]}, + "isnull": lambda params, value_annotation, negated: {"$ne": None} if value_annotation == negated else None, } def __init__(self, query, connection, using): @@ -49,7 +49,7 @@ if column == self.query.model._meta.pk.column: column = "_id" - return column, self.LOOKUP_TYPES[lookup_type](params) + return column, self.LOOKUP_TYPES[lookup_type](params, value_annotation, negated) def negate(self, k, v): if isinstance(v, dict): Modified: django/branches/soc2010/query-refactor/tests/regressiontests/mongodb/tests.py =================================================================== --- django/branches/soc2010/query-refactor/tests/regressiontests/mongodb/tests.py 2010-06-22 02:58:45 UTC (rev 13379) +++ django/branches/soc2010/query-refactor/tests/regressiontests/mongodb/tests.py 2010-06-22 18:08:38 UTC (rev 13380) @@ -189,3 +189,38 @@ ], lambda g: g.name, ) + + def test_isnull(self): + q = Group.objects.create(name="Queen", year_formed=1971) + e = Group.objects.create(name="The E Street Band", year_formed=1972) + b = Group.objects.create(name="The Beatles") + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__isnull=True), [ + "The Beatles", + ], + lambda g: g.name, + ) + + self.assertQuerysetEqual( + Group.objects.filter(year_formed__isnull=False), [ + "Queen", + "The E Street Band", + ], + lambda g: g.name + ) + + self.assertQuerysetEqual( + Group.objects.exclude(year_formed__isnull=True), [ + "Queen", + "The E Street Band", + ], + lambda g: g.name + ) + + self.assertQuerysetEqual( + Group.objects.exclude(year_formed__isnull=False), [ + "The Beatles", + ], + lambda g: g.name + ) -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.