Beispiel #1
0
 def test_parse_time(self):
     # Valid inputs
     self.assertEqual(parse_time('09:15:00'), time(9, 15))
     self.assertEqual(parse_time('10:10'), time(10, 10))
     self.assertEqual(parse_time('10:20:30.400'), time(10, 20, 30, 400000))
     self.assertEqual(parse_time('4:8:16'), time(4, 8, 16))
     # Invalid inputs
     self.assertEqual(parse_time('091500'), None)
     self.assertRaises(ValueError, parse_time, '09:15:90')
Beispiel #2
0
    def convert_values(self, value, field):
        """SQLite returns floats when it should be returning decimals,
        and gets dates and datetimes wrong.
        For consistency with other backends, coerce when required.
        """
        internal_type = field.get_internal_type()
        if internal_type == 'DecimalField':
            return util.typecast_decimal(field.format_number(value))
        elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':
            return int(value)
        elif internal_type == 'DateField':
            return parse_date(value)
        elif internal_type == 'DateTimeField':
            return parse_datetime_with_timezone_support(value)
        elif internal_type == 'TimeField':
            return parse_time(value)

        # No field, or the field isn't known to be a decimal or integer
        return value
Beispiel #3
0
    def to_python(self, value):
        if value is None:
            return None
        if isinstance(value, datetime.time):
            return value
        if isinstance(value, datetime.datetime):
            # Not usually a good idea to pass in a datetime here (it loses
            # information), but this can be a side-effect of interacting with a
            # database backend (e.g. Oracle), so we'll be accommodating.
            return value.time()

        try:
            parsed = parse_time(value)
            if parsed is not None:
                return parsed
        except ValueError:
            msg = self.error_messages['invalid_time'] % value
            raise exceptions.ValidationError(msg)

        msg = self.error_messages['invalid'] % value
        raise exceptions.ValidationError(msg)