Got EmbeddedDocumentFields working

Added validation on EmbeddedDocumentField, added tests for
EmbeddedDocumentFields.
This commit is contained in:
Harry Marr
2009-11-17 01:32:40 +00:00
parent 48418d5a60
commit 5a87534c22
5 changed files with 46 additions and 5 deletions

View File

@@ -1,8 +1,9 @@
from document import Document
import document
from document import *
import fields
from fields import *
__all__ = fields.__all__ + ['Document']
__all__ = document.__all__ + fields.__all__
__author__ = 'Harry Marr'
__version__ = '0.1'

View File

@@ -161,3 +161,8 @@ class BaseDocument(object):
if name not in self._fields:
raise KeyError(name)
return setattr(self, name, value)
def _to_mongo(self):
"""Return data dictionary ready for use with MongoDB.
"""
return dict((k, v) for k, v in self._data.items() if v is not None)

View File

@@ -2,6 +2,10 @@ from base import DocumentMetaclass, TopLevelDocumentMetaclass, BaseDocument
#import pymongo
__all__ = ['Document', 'EmbeddedDocument']
class EmbeddedDocument(BaseDocument):
__metaclass__ = DocumentMetaclass

View File

@@ -4,7 +4,8 @@ from document import EmbeddedDocument
import re
__all__ = ['StringField', 'IntField', 'ValidationError']
__all__ = ['StringField', 'IntField', 'EmbeddedDocumentField',
'ValidationError']
class StringField(BaseField):
@@ -52,7 +53,15 @@ class EmbeddedDocumentField(BaseField):
def __init__(self, document, **kwargs):
if not issubclass(document, EmbeddedDocument):
raise ValidationError('Invalid embedded document provided to an '
'EmbeddedDocumentField')
raise ValidationError('Invalid embedded document class provided '
'to an EmbeddedDocumentField')
self.document = document
super(EmbeddedDocumentField, self).__init__(**kwargs)
def _to_python(self, value):
return value
def _validate(self, value):
if not isinstance(value, self.document):
raise ValidationError('Invalid embedded document instance '
'provided to an EmbeddedDocumentField')