def convert(self, value): value = _to_string(value) if not value: if self.required: message = self.messages['required'] if message is None: message = self.gettext(u'This field is required.') raise ValidationError(message) return None try: value = int(value) except ValueError: message = self.messages['no_integer'] if message is None: message = self.gettext('Please enter a whole number.') raise ValidationError(message) if self.min_value is not None and value < self.min_value: message = self.messages['too_small'] if message is None: message = self.gettext(u'Ensure this value is greater than or ' u'equal to %s.') % self.min_value raise ValidationError(message) if self.max_value is not None and value > self.max_value: message = self.messages['too_big'] if message is None: message = self.gettext(u'Ensure this value is less than or ' u'equal to %s.') % self.max_value raise ValidationError(message) return int(value)
def convert(self, value): value = _to_string(value) if self.required: if not value: message = self.messages['required'] if message is None: message = self.gettext(u'This field is required.') raise ValidationError(message) if value: if self.min_length is not None and len(value) < self.min_length: message = self.messages['too_short'] if message is None: message = self.ngettext( u'Please enter at least %d character.', u'Please enter at least %d characters.', self.min_length) % self.min_length raise ValidationError(message) if self.max_length is not None and len(value) > self.max_length: message = self.messages['too_long'] if message is None: message = self.ngettext( u'Please enter no more than %d character.', u'Please enter no more than %d characters.', self.max_length) % self.max_length raise ValidationError(message) return value
def to_primitive(self, value): """Convert a value into a primitve (string or a list/dict of lists, dicts or strings). This method must never fail! """ return _to_string(value)
def convert(self, value): result = [] known_choices = {} for choice in self.choices: if isinstance(choice, tuple): choice = choice[0] known_choices[choice] = choice known_choices.setdefault(_to_string(choice), choice) x = _to_list(value) for value in _to_list(value): for version in value, _to_string(value): if version in known_choices: result.append(known_choices[version]) break else: message = self.gettext(u'"%s" is not a valid choice') % value raise ValidationError(message) if self.min_size is not None and len(result) < self.min_size: message = self.messages['too_small'] if message is None: message = self.ngettext( u'Please provide at least %d item.', u'Please provide at least %d items.', self.min_size) % self.min_size raise ValidationError(message) if self.max_size is not None and len(result) > self.max_size: message = self.messages['too_big'] if message is None: message = self.ngettext( u'Please provide no more than %d item.', u'Please provide no more than %d items.', self.min_size) % self.min_size raise ValidationError(message) return result
def convert(self, value): if isinstance(value, date): return value value = _to_string(value) if not value: if self.required: raise ValidationError(self.messages['required']) return None try: return parse_date(value, date_formats=self.date_formats) except ValueError: message = self.messages['invalid_date'] if message is None: message = self.gettext('Please enter a valid date.') raise ValidationError(message)
def convert(self, value): """This can be overridden by subclasses and performs the value conversion. """ return _to_string(value)