Merge "Add BaseEnumField valid_values introspection"

This commit is contained in:
Jenkins 2016-04-06 16:08:07 +00:00 committed by Gerrit Code Review
commit 60e1bdf588
2 changed files with 15 additions and 2 deletions

View File

@ -291,6 +291,10 @@ class Enum(String):
self._valid_values = valid_values
super(Enum, self).__init__(**kwargs)
@property
def valid_values(self):
return tuple(self._valid_values)
def coerce(self, obj, attr, value):
if value not in self._valid_values:
msg = _("Field value %s is invalid") % value
@ -687,7 +691,7 @@ class BaseEnumField(AutoTypedField):
super(BaseEnumField, self).__init__(**kwargs)
def __repr__(self):
valid_values = self._type._valid_values
valid_values = self._type.valid_values
args = {
'nullable': self._nullable,
'default': self._default,
@ -697,6 +701,11 @@ class BaseEnumField(AutoTypedField):
','.join(['%s=%s' % (k, v)
for k, v in sorted(args.items())]))
@property
def valid_values(self):
"""Return the list of valid values for the field."""
return self._type.valid_values
class EnumField(BaseEnumField):
'''Anonymous enum field type
@ -885,7 +894,7 @@ class ListOfEnumField(AutoTypedField):
super(ListOfEnumField, self).__init__(**kwargs)
def __repr__(self):
valid_values = self._type._element_type._type._valid_values
valid_values = self._type._element_type._type.valid_values
args = {
'nullable': self._nullable,
'default': self._default,

View File

@ -252,6 +252,10 @@ class TestBaseEnum(TestField):
field2 = FakeEnumAltField()
self.assertNotEqual(str(field1), str(field2))
def test_valid_values(self):
self.assertEqual(self.field.valid_values,
FakeEnum.ALL)
class TestEnum(TestField):
def setUp(self):