def before_write_item(self, value):
source_value = value.name if isinstance(value, Enum) else value
enum_cls = self.enum_cls
# Check real enum value
try:
if isinstance(source_value, compat.string_types):
return enum_cls[source_value].value
else:
return enum_cls(source_value).value
except (ValueError, KeyError):
choices = ', '.join(
"'{}' = {}".format(x.name, x.value) for x in enum_cls
)
enum_str = '{}({})'.format(enum_cls.__name__, choices)
raise errors.LogicalError(
"Unknown element '{}' for type {}"
.format(source_value, enum_str)
)
评论列表
文章目录