diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-04 09:48:18 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-04 09:48:18 (GMT) |
commit | 62f367c8a4d05556bf36262833b8d01b1a3a4492 (patch) | |
tree | a7e1e74fe9d8dbd902bf698383c9681ec862ad40 | |
parent | c1f918be2f234a5e9bcb903bd3b8b19cb9753c70 (diff) |
Allow list on enums in proprty values
-rw-r--r-- | active_document/metadata.py | 6 | ||||
-rwxr-xr-x | tests/units/metadata.py | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/active_document/metadata.py b/active_document/metadata.py index c1d2963..b7ad280 100644 --- a/active_document/metadata.py +++ b/active_document/metadata.py @@ -291,9 +291,9 @@ def _convert(typecast, value): value = value.encode('utf-8') else: value = str(value) - elif issubclass(type(typecast), collections.Iterable): + elif type(typecast) in (list, tuple): if typecast and type(typecast[0]) is not type and \ - not issubclass(type(typecast[0]), collections.Iterable): + type(typecast[0]) not in (list, tuple): # Enums enforce(value in typecast, _('Value "%s" is not in "%s" list'), @@ -318,7 +318,7 @@ def _convert(typecast, value): def _is_sloted_prop(typecast): if typecast in [None, int, float, bool, str]: return True - if issubclass(type(typecast), collections.Iterable): + if type(typecast) in (list, tuple): if not typecast or [i for i in typecast \ if type(i) in [None, int, float, bool, str]]: return True diff --git a/tests/units/metadata.py b/tests/units/metadata.py index d6712d1..5da7b30 100755 --- a/tests/units/metadata.py +++ b/tests/units/metadata.py @@ -77,6 +77,14 @@ class MetadataTest(tests.Test): self.assertEqual(('',), prop.convert([''])) self.assertEqual((), prop.convert([])) + prop = metadata.Property('prop', typecast=[['A', 'B', 'C']]) + self.assertEqual((), prop.convert('')) + self.assertRaises(RuntimeError, prop.convert, ['']) + self.assertEqual((), prop.convert([])) + self.assertEqual(('A', 'B', 'C'), prop.convert(['A', 'B', 'C'])) + self.assertRaises(RuntimeError, prop.convert, ['a']) + self.assertRaises(RuntimeError, prop.convert, ['A', 'x']) + def test_Property_serialise(self): prop = metadata.Property('prop', typecast=int) self.assertEqual(['0'], prop.serialise(0)) |