Merge branch 'master' into dev

This commit is contained in:
Ross Lawley 2012-03-12 10:33:08 +00:00
commit 3ec9dfc108
3 changed files with 14 additions and 6 deletions

View File

@ -76,7 +76,7 @@ To upgrade use a Mixin class to set meta like so ::
class MyAceDocument(Document, BaseMixin):
pass
MyAceDocument._get_collection_name() == myacedocument
MyAceDocument._get_collection_name() == "myacedocument"
Alternatively, you can rename your collections eg ::

View File

@ -478,13 +478,18 @@ class DocumentMetaclass(type):
attrs.update(dict([(k, v) for k, v in base.__dict__.items()
if issubclass(v.__class__, BaseField)]))
# Handle simple mixin's with meta
if hasattr(base, 'meta') and not isinstance(base, DocumentMetaclass):
meta = attrs.get('meta', {})
meta.update(base.meta)
attrs['meta'] = meta
for p_base in base.__bases__:
#optimize :-)
if p_base in (object, BaseDocument):
continue
attrs.update(_get_mixin_fields(p_base))
return attrs
metaclass = attrs.get('__metaclass__')
@ -498,6 +503,7 @@ 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)
@ -526,7 +532,8 @@ class DocumentMetaclass(type):
simple_class = False
doc_class_name = '.'.join(reversed(class_name))
meta = attrs.get('_meta', attrs.get('meta', {}))
meta = attrs.get('_meta', {})
meta.update(attrs.get('meta', {}))
if 'allow_inheritance' not in meta:
meta['allow_inheritance'] = True

View File

@ -96,7 +96,7 @@ class DocumentTest(unittest.TestCase):
# Ensure Document isn't treated like an actual document
self.assertFalse(hasattr(Document, '_fields'))
def test_collection_name(self):
def test_collection_naming(self):
"""Ensure that a collection with a specified name may be used.
"""
@ -157,11 +157,12 @@ class DocumentTest(unittest.TestCase):
}
class BaseDocument(Document, BaseMixin):
pass
meta = {'allow_inheritance': True}
class MyDocument(BaseDocument):
pass
self.assertEquals('mydocument', OldMixinNamingConvention._get_collection_name())
self.assertEquals('basedocument', MyDocument._get_collection_name())
def test_get_superclasses(self):
"""Ensure that the correct list of superclasses is assembled.