From 3598fe0fb45d969ef936fedc33db4a63371266a8 Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Tue, 27 Nov 2012 14:02:50 +0000 Subject: [PATCH] Adding _collection to _cls --- mongoengine/base/metaclasses.py | 3 +++ tests/document/instance.py | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/mongoengine/base/metaclasses.py b/mongoengine/base/metaclasses.py index e68ec13d..c6c4db1f 100644 --- a/mongoengine/base/metaclasses.py +++ b/mongoengine/base/metaclasses.py @@ -169,6 +169,9 @@ class DocumentMetaclass(type): "field name" % field.name) raise InvalidDocumentError(msg) + if issubclass(new_class, Document): + new_class._collection = None + # Add class to the _document_registry _document_registry[new_class._class_name] = new_class diff --git a/tests/document/instance.py b/tests/document/instance.py index 8fb4fd72..de677e21 100644 --- a/tests/document/instance.py +++ b/tests/document/instance.py @@ -1762,6 +1762,31 @@ class InstanceTest(unittest.TestCase): self.assertEqual(Book._get_collection(), get_db("testdb-2")[Book._get_collection_name()]) self.assertEqual(AuthorBooks._get_collection(), get_db("testdb-3")[AuthorBooks._get_collection_name()]) + def test_db_alias_overrides(self): + """db_alias can be overriden + """ + # Register a connection with db_alias testdb-2 + register_connection('testdb-2', 'mongoenginetest2') + + class A(Document): + """Uses default db_alias + """ + name = StringField() + meta = {"allow_inheritance": True} + + class B(A): + """Uses testdb-2 db_alias + """ + meta = {"db_alias": "testdb-2"} + + A.objects.all() + + self.assertEquals('testdb-2', B._meta.get('db_alias')) + self.assertEquals('mongoenginetest', + A._get_collection().database.name) + self.assertEquals('mongoenginetest2', + B._get_collection().database.name) + def test_db_alias_propagates(self): """db_alias propagates? """