made ListField init with an instance (not a class) of Field

This commit is contained in:
Ismael Carnales 2009-08-03 15:00:02 -03:00
parent d8b85ae7ad
commit cf638e682c
3 changed files with 7 additions and 7 deletions

View File

@ -19,13 +19,13 @@ class BaseField(object):
class ListField(BaseField):
def __init__(self, field_type, default=None):
self._field = field_type()
def __init__(self, field, default=None):
self.field = field
super(ListField, self).__init__(default)
def to_python(self, value):
if hasattr(value, '__iter__'):
return [self._field.to_python(v) for v in value]
return [self.field.to_python(v) for v in value]
else:
raise TypeError("Cannot instatiante %s with %s" \
% (self.__class__.__name__, type(value).__name__))

View File

@ -30,7 +30,7 @@ class InheritDefaultAdaptor(DefaultedAdaptor):
class ListFieldTestItem(Item):
names = fields.ListField(fields.TextField)
names = fields.ListField(fields.TextField())
class ListFieldItemAdaptor(ItemAdaptor):

View File

@ -37,10 +37,10 @@ class NewItemTest(unittest.TestCase):
self.assertRaises(TypeError, TestItem, name=set())
def test_multi(self):
def test_list(self):
class TestListItem(Item):
name = fields.TextField()
names = fields.ListField(fields.TextField)
names = fields.ListField(fields.TextField())
i = TestListItem()
i['name'] = u'name'
@ -337,7 +337,7 @@ class NewItemFieldsTest(unittest.TestCase):
self.assertEqual(field.from_unicode_list([]), u'')
self.assertEqual(field.from_unicode_list([u'hello', u'world']), u'hello world')
field = fields.ListField(fields.TextField)
field = fields.ListField(fields.TextField())
self.assertEqual(field.from_unicode_list([]), [])
self.assertEqual(field.from_unicode_list([u'hello', u'world']), [u'hello', u'world'])