Added document mixin support

For extendable / reusable documents
Fixes #204
This commit is contained in:
Ross Lawley
2011-06-20 09:44:53 +01:00
parent e04e5f42ef
commit 1b0323bc22
4 changed files with 36 additions and 2 deletions

View File

@@ -389,6 +389,7 @@ class DocumentMetaclass(type):
class_name = [name]
superclasses = {}
simple_class = True
for base in bases:
# Include all fields present in superclasses
if hasattr(base, '_fields'):
@@ -397,6 +398,9 @@ class DocumentMetaclass(type):
# Get superclasses from superclass
superclasses[base._class_name] = base
superclasses.update(base._superclasses)
else: # Add any mixin fields
attrs.update(dict([(k,v) for k,v in base.__dict__.items()
if issubclass(v.__class__, BaseField)]))
if hasattr(base, '_meta') and not base._meta.get('abstract'):
# Ensure that the Document class may be subclassed -