Source code for taskw.fields.choice

from .base import Field


[docs]class ChoiceField(Field): def __init__( self, choices=None, nullable=False, case_sensitive=False, **kwargs ): self._choices = choices if choices else [] self._case_sensitive = case_sensitive super(ChoiceField, self).__init__(**kwargs)
[docs] def is_valid_choice(self, value): if value is None and value not in self._choices: return False if value is None and value in self._choices: return True if self._case_sensitive and value in self._choices: return True elif ( not self._case_sensitive and value.upper() in [v.upper() for v in self._choices if v] ): return True elif self._case_sensitive and value in self._choices: return True return False
[docs] def serialize(self, value): if not self.is_valid_choice(value): raise ValueError( "'%s' is not a valid choice; choices: %s" % ( value, self._choices, ) ) return value