Merge "Add BaseEnumField valid_values introspection"
This commit is contained in:
commit
60e1bdf588
|
@ -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,
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue