Document.select_related() now respects db_alias
(#377)
This commit is contained in:
parent
fa83fba637
commit
4209d61b13
@ -4,6 +4,7 @@ Changelog
|
|||||||
|
|
||||||
Changes in 0.8.3
|
Changes in 0.8.3
|
||||||
================
|
================
|
||||||
|
- Document.select_related() now respects `db_alias` (#377)
|
||||||
- Reload uses shard_key if applicable (#384)
|
- Reload uses shard_key if applicable (#384)
|
||||||
- Dynamic fields are ordered based on creation and stored in _fields_ordered (#396)
|
- Dynamic fields are ordered based on creation and stored in _fields_ordered (#396)
|
||||||
- Fixed pickling dynamic documents `_dynamic_fields` (#387)
|
- Fixed pickling dynamic documents `_dynamic_fields` (#387)
|
||||||
|
@ -440,8 +440,8 @@ class Document(BaseDocument):
|
|||||||
|
|
||||||
.. versionadded:: 0.5
|
.. versionadded:: 0.5
|
||||||
"""
|
"""
|
||||||
import dereference
|
DeReference = _import_class('DeReference')
|
||||||
self._data = dereference.DeReference()(self._data, max_depth)
|
DeReference()([self], max_depth + 1)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def reload(self, max_depth=1):
|
def reload(self, max_depth=1):
|
||||||
|
@ -2474,6 +2474,37 @@ class FieldTest(unittest.TestCase):
|
|||||||
user = User(email='me@example.com')
|
user = User(email='me@example.com')
|
||||||
self.assertTrue(user.validate() is None)
|
self.assertTrue(user.validate() is None)
|
||||||
|
|
||||||
|
def test_tuples_as_tuples(self):
|
||||||
|
"""
|
||||||
|
Ensure that tuples remain tuples when they are
|
||||||
|
inside a ComplexBaseField
|
||||||
|
"""
|
||||||
|
from mongoengine.base import BaseField
|
||||||
|
|
||||||
|
class EnumField(BaseField):
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(EnumField, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
def to_mongo(self, value):
|
||||||
|
return value
|
||||||
|
|
||||||
|
def to_python(self, value):
|
||||||
|
return tuple(value)
|
||||||
|
|
||||||
|
class TestDoc(Document):
|
||||||
|
items = ListField(EnumField())
|
||||||
|
|
||||||
|
TestDoc.drop_collection()
|
||||||
|
tuples = [(100, 'Testing')]
|
||||||
|
doc = TestDoc()
|
||||||
|
doc.items = tuples
|
||||||
|
doc.save()
|
||||||
|
x = TestDoc.objects().get()
|
||||||
|
self.assertTrue(x is not None)
|
||||||
|
self.assertTrue(len(x.items) == 1)
|
||||||
|
self.assertTrue(tuple(x.items[0]) in tuples)
|
||||||
|
self.assertTrue(x.items[0] in tuples)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -1121,37 +1121,32 @@ class FieldTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertEqual(q, 2)
|
self.assertEqual(q, 2)
|
||||||
|
|
||||||
def test_tuples_as_tuples(self):
|
def test_objectid_reference_across_databases(self):
|
||||||
"""
|
# mongoenginetest - Is default connection alias from setUp()
|
||||||
Ensure that tuples remain tuples when they are
|
# Register Aliases
|
||||||
inside a ComplexBaseField
|
register_connection('testdb-1', 'mongoenginetest2')
|
||||||
"""
|
|
||||||
from mongoengine.base import BaseField
|
|
||||||
|
|
||||||
class EnumField(BaseField):
|
class User(Document):
|
||||||
|
name = StringField()
|
||||||
|
meta = {"db_alias": "testdb-1"}
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
class Book(Document):
|
||||||
super(EnumField, self).__init__(**kwargs)
|
name = StringField()
|
||||||
|
author = ReferenceField(User)
|
||||||
|
|
||||||
def to_mongo(self, value):
|
# Drops
|
||||||
return value
|
User.drop_collection()
|
||||||
|
Book.drop_collection()
|
||||||
|
|
||||||
def to_python(self, value):
|
user = User(name="Ross").save()
|
||||||
return tuple(value)
|
Book(name="MongoEngine for pros", author=user).save()
|
||||||
|
|
||||||
class TestDoc(Document):
|
# Can't use query_counter across databases - so test the _data object
|
||||||
items = ListField(EnumField())
|
book = Book.objects.first()
|
||||||
|
self.assertFalse(isinstance(book._data['author'], User))
|
||||||
|
|
||||||
TestDoc.drop_collection()
|
book.select_related()
|
||||||
tuples = [(100, 'Testing')]
|
self.assertTrue(isinstance(book._data['author'], User))
|
||||||
doc = TestDoc()
|
|
||||||
doc.items = tuples
|
|
||||||
doc.save()
|
|
||||||
x = TestDoc.objects().get()
|
|
||||||
self.assertTrue(x is not None)
|
|
||||||
self.assertTrue(len(x.items) == 1)
|
|
||||||
self.assertTrue(tuple(x.items[0]) in tuples)
|
|
||||||
self.assertTrue(x.items[0] in tuples)
|
|
||||||
|
|
||||||
def test_non_ascii_pk(self):
|
def test_non_ascii_pk(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user