From 69d57209f7ace0013fe55cbe2981c35a72b5ff57 Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Mon, 30 Jul 2012 13:35:45 +0100 Subject: [PATCH] Minor --- mongoengine/base.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mongoengine/base.py b/mongoengine/base.py index ca45080d..86cd9b4f 100644 --- a/mongoengine/base.py +++ b/mongoengine/base.py @@ -111,6 +111,7 @@ class ValidationError(AssertionError): _document_registry = {} +_module_registry = {} def get_document(name): @@ -503,7 +504,6 @@ class DocumentMetaclass(type): simple_class = True for base in bases: - # Include all fields present in superclasses if hasattr(base, '_fields'): doc_fields.update(base._fields) @@ -549,7 +549,7 @@ class DocumentMetaclass(type): # Add the document's fields to the _fields attribute field_names = {} - for attr_name, attr_value in attrs.items(): + for attr_name, attr_value in attrs.iteritems(): if hasattr(attr_value, "__class__") and \ issubclass(attr_value.__class__, BaseField): attr_value.name = attr_name @@ -565,7 +565,15 @@ class DocumentMetaclass(type): attrs['_db_field_map'] = dict([(k, v.db_field) for k, v in doc_fields.items() if k != v.db_field]) attrs['_reverse_db_field_map'] = dict([(v, k) for k, v in attrs['_db_field_map'].items()]) - from mongoengine import Document, EmbeddedDocument, DictField + if 'Document' not in _module_registry: + from mongoengine import Document, EmbeddedDocument, DictField + _module_registry['Document'] = Document + _module_registry['EmbeddedDocument'] = EmbeddedDocument + _module_registry['DictField'] = DictField + else: + Document = _module_registry.get('Document') + EmbeddedDocument = _module_registry.get('EmbeddedDocument') + DictField = _module_registry.get('DictField') new_class = super_new(cls, name, bases, attrs) for field in new_class._fields.values():