class EnumChoices(enum.EnumMeta):
def __new__(cls, name, bases, classdict):
@classmethod
def choices(cls) -> typing.Tuple[typing.Tuple[typing.Union[str, typing.Any]]]:
"""
Return a tuple of tuples with value and name for each item in an Enum
This is useful to pass an Enum to a ChoiceField
:param items: Enum object
:return: tuple of tuples of items with value and name
"""
return tuple((item.value, item.name) for item in cls)
classdict['choices'] = choices
return super().__new__(cls, name, bases, classdict)
class QualityCheck(enum.IntEnum, metaclass=EnumChoices):
NOT_PASSED = 0
PASSED = 1
DISCARDED = 2