From b09c52fc7ec9b8cc5379797583bb1bb0e7f11b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilson=20J=C3=BAnior?= Date: Wed, 19 Oct 2011 06:30:41 -0200 Subject: [PATCH 1/4] fixes for #325 issue --- mongoengine/fields.py | 6 ++++++ setup.py | 2 +- tests/fields.py | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index abea212c..a1638bf0 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -666,6 +666,9 @@ class ReferenceField(BaseField): return pymongo.dbref.DBRef(collection, id_) def prepare_query_value(self, op, value): + if value is None: + return None + return self.to_mongo(value) def validate(self, value): @@ -743,6 +746,9 @@ class GenericReferenceField(BaseField): return {'_cls': document._class_name, '_ref': ref} def prepare_query_value(self, op, value): + if value is None: + return None + return self.to_mongo(value) diff --git a/setup.py b/setup.py index 6877b625..d4dd5abd 100644 --- a/setup.py +++ b/setup.py @@ -47,5 +47,5 @@ setup(name='mongoengine', classifiers=CLASSIFIERS, install_requires=['pymongo'], test_suite='tests', - tests_require=['blinker', 'django==1.3'] + tests_require=['blinker', 'django>=1.3'] ) diff --git a/tests/fields.py b/tests/fields.py index c95b544e..4f1f13d4 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -997,10 +997,16 @@ class FieldTest(unittest.TestCase): mongodb = Product(name='MongoDB', company=ten_gen) mongodb.save() + me = Product(name='MongoEngine') + me.save() + obj = Product.objects(company=ten_gen).first() self.assertEqual(obj, mongodb) self.assertEqual(obj.company, ten_gen) + obj = Product.objects(company=None).first() + self.assertEqual(obj, me) + def test_reference_query_conversion(self): """Ensure that ReferenceFields can be queried using objects and values of the type of the primary key of the referenced object. From 7f2b686ab54104549dc25872ccbb5950eea61182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilson=20J=C3=BAnior?= Date: Wed, 19 Oct 2011 06:55:05 -0200 Subject: [PATCH 2/4] added drop_collection for test --- tests/fields.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/fields.py b/tests/fields.py index 4f1f13d4..23046715 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -992,6 +992,9 @@ class FieldTest(unittest.TestCase): class Company(Document): name = StringField() + Product.drop_collection() + Company.drop_collection() + ten_gen = Company(name='10gen') ten_gen.save() mongodb = Product(name='MongoDB', company=ten_gen) From f842c90007631c7f9d1a424e05c0543c50bb95c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilson=20J=C3=BAnior?= Date: Wed, 19 Oct 2011 06:57:39 -0200 Subject: [PATCH 3/4] Merge branches 'master' and 'fixes-325' into fixes-325 From 8e87648d53eac1caf786e47197cc79e79c2b3045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wilson=20J=C3=BAnior?= Date: Wed, 19 Oct 2011 09:44:49 -0200 Subject: [PATCH 4/4] added tests for get_or_create --- tests/fields.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/fields.py b/tests/fields.py index 23046715..80a343e3 100644 --- a/tests/fields.py +++ b/tests/fields.py @@ -1010,6 +1010,11 @@ class FieldTest(unittest.TestCase): obj = Product.objects(company=None).first() self.assertEqual(obj, me) + obj, created = Product.objects.get_or_create(company=None) + + self.assertEqual(created, False) + self.assertEqual(obj, me) + def test_reference_query_conversion(self): """Ensure that ReferenceFields can be queried using objects and values of the type of the primary key of the referenced object.