added MultiValuedField to newitem

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40981
This commit is contained in:
Ismael Carnales 2009-03-10 19:35:45 +00:00
parent 2f75c2c93e
commit ec1a6af04a
2 changed files with 25 additions and 1 deletions

View File

@ -3,7 +3,7 @@ import decimal
import re
__all__ = ['BooleanField', 'DateField', 'DecimalField',
__all__ = ['MultiValuedField', 'BooleanField', 'DateField', 'DecimalField',
'FloatField', 'IntegerField', 'StringField']
@ -34,6 +34,21 @@ class Field(object):
return ' '.join(value)
class MultiValuedField(Field):
def __init__(self, field_type, required=False, default=None):
self._field = field_type()
super(MultiValuedField, self).__init__(required, default)
def to_python(self, value):
if value is None:
return []
else:
return [self._field.to_python(v) for v in value]
def deiter(self, value):
return value
class BooleanField(Field):
def to_python(self, value):
if value in (True, False): return value

View File

@ -13,3 +13,12 @@ class NewItemTest(unittest.TestCase):
i.name = 'name'
assert i.name == 'name'
def test_multi(self):
class TestMultiItem(Item):
name = StringField()
names = MultiValuedField(StringField)
i = TestMultiItem()
i.name = 'name'
i.names = ['name1', 'name2']
assert i.names == ['name1', 'name2']