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
|
self._valid_values = valid_values
|
||||||
super(Enum, self).__init__(**kwargs)
|
super(Enum, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def valid_values(self):
|
||||||
|
return tuple(self._valid_values)
|
||||||
|
|
||||||
def coerce(self, obj, attr, value):
|
def coerce(self, obj, attr, value):
|
||||||
if value not in self._valid_values:
|
if value not in self._valid_values:
|
||||||
msg = _("Field value %s is invalid") % value
|
msg = _("Field value %s is invalid") % value
|
||||||
|
@ -687,7 +691,7 @@ class BaseEnumField(AutoTypedField):
|
||||||
super(BaseEnumField, self).__init__(**kwargs)
|
super(BaseEnumField, self).__init__(**kwargs)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
valid_values = self._type._valid_values
|
valid_values = self._type.valid_values
|
||||||
args = {
|
args = {
|
||||||
'nullable': self._nullable,
|
'nullable': self._nullable,
|
||||||
'default': self._default,
|
'default': self._default,
|
||||||
|
@ -697,6 +701,11 @@ class BaseEnumField(AutoTypedField):
|
||||||
','.join(['%s=%s' % (k, v)
|
','.join(['%s=%s' % (k, v)
|
||||||
for k, v in sorted(args.items())]))
|
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):
|
class EnumField(BaseEnumField):
|
||||||
'''Anonymous enum field type
|
'''Anonymous enum field type
|
||||||
|
@ -885,7 +894,7 @@ class ListOfEnumField(AutoTypedField):
|
||||||
super(ListOfEnumField, self).__init__(**kwargs)
|
super(ListOfEnumField, self).__init__(**kwargs)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
valid_values = self._type._element_type._type._valid_values
|
valid_values = self._type._element_type._type.valid_values
|
||||||
args = {
|
args = {
|
||||||
'nullable': self._nullable,
|
'nullable': self._nullable,
|
||||||
'default': self._default,
|
'default': self._default,
|
||||||
|
|
|
@ -252,6 +252,10 @@ class TestBaseEnum(TestField):
|
||||||
field2 = FakeEnumAltField()
|
field2 = FakeEnumAltField()
|
||||||
self.assertNotEqual(str(field1), str(field2))
|
self.assertNotEqual(str(field1), str(field2))
|
||||||
|
|
||||||
|
def test_valid_values(self):
|
||||||
|
self.assertEqual(self.field.valid_values,
|
||||||
|
FakeEnum.ALL)
|
||||||
|
|
||||||
|
|
||||||
class TestEnum(TestField):
|
class TestEnum(TestField):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
Loading…
Reference in New Issue