From: olivier <> Date: Thu, 11 Feb 2010 13:03:12 +0000 (+0000) Subject: store durations as integers for compatibility with Django mysql backend X-Git-Tag: 1.1~552 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=12d665fed3473be9963841349da0762f70e3a2df;p=telemeta.git store durations as integers for compatibility with Django mysql backend --- diff --git a/telemeta/models/core.py b/telemeta/models/core.py index 9640ea48..fca89aa5 100644 --- a/telemeta/models/core.py +++ b/telemeta/models/core.py @@ -144,18 +144,20 @@ class DurationField(models.Field): __metaclass__ = models.SubfieldBase default_error_messages = { - 'invalid': _('Enter a valid duration in HH:MM[:ss[.uuuuuu]] format.'), + 'invalid': _('Enter a valid duration in HH:MM[:ss] format.'), } def __init__(self, *args, **kwargs): super(DurationField, self).__init__(*args, **normalize_field(kwargs, '00:00')) - def get_internal_type(self): - return 'TimeField' + def db_type(self): + return 'int' def to_python(self, value): if value is None: return None + if isinstance(value, int) or isinstance(value, long): + return Duration(seconds=value) if isinstance(value, datetime.time): return Duration(hours=value.hour, minutes=value.minute, seconds=value.second) if isinstance(value, datetime.datetime): @@ -174,7 +176,7 @@ class DurationField(models.Field): def get_db_prep_value(self, value, connection, prepared=False): # Casts times into the format expected by the backend - return unicode(value) + return value.as_seconds() def value_to_string(self, obj): val = self._get_val_from_obj(obj)