From 12d665fed3473be9963841349da0762f70e3a2df Mon Sep 17 00:00:00 2001 From: olivier <> Date: Thu, 11 Feb 2010 13:03:12 +0000 Subject: [PATCH] store durations as integers for compatibility with Django mysql backend --- telemeta/models/core.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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) -- 2.39.5