From e2c78047b15753e1ee902a02373feea146ee43e4 Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Wed, 26 Sep 2012 10:43:14 +0000 Subject: [PATCH] Moved injection of Exceptions to top level --- mongoengine/base.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mongoengine/base.py b/mongoengine/base.py index 773c1d4c..92dcfa93 100644 --- a/mongoengine/base.py +++ b/mongoengine/base.py @@ -635,17 +635,6 @@ class DocumentMetaclass(type): "field name" % field.name) raise InvalidDocumentError(msg) - # Merge in exceptions with parent hierarchy - exceptions_to_merge = (DoesNotExist, MultipleObjectsReturned) - module = attrs.get('__module__') - for exc in exceptions_to_merge: - name = exc.__name__ - parents = tuple(getattr(base, name) for base in flattened_bases - if hasattr(base, name)) or (exc,) - # Create new exception and set to new_class - exception = type(name, parents, {'__module__': module}) - setattr(new_class, name, exception) - # Add class to the _document_registry _document_registry[new_class._class_name] = new_class @@ -836,6 +825,17 @@ class TopLevelDocumentMetaclass(DocumentMetaclass): new_class._fields['id'] = ObjectIdField(db_field='_id') new_class.id = new_class._fields['id'] + # Merge in exceptions with parent hierarchy + exceptions_to_merge = (DoesNotExist, MultipleObjectsReturned) + module = attrs.get('__module__') + for exc in exceptions_to_merge: + name = exc.__name__ + parents = tuple(getattr(base, name) for base in flattened_bases + if hasattr(base, name)) or (exc,) + # Create new exception and set to new_class + exception = type(name, parents, {'__module__': module}) + setattr(new_class, name, exception) + return new_class @classmethod