[Debconf-video-commits] r370 - package/branches/pycon09/src/debconfvideo/web/pyconvideo
benh at alioth.debian.org
benh at alioth.debian.org
Sat Mar 21 19:09:51 UTC 2009
Author: benh
Date: 2009-03-21 19:09:50 +0000 (Sat, 21 Mar 2009)
New Revision: 370
Modified:
package/branches/pycon09/src/debconfvideo/web/pyconvideo/models.py
Log:
Add control of precision to IntervalField; we do not store sub-second precision for most relative times.
Remove redundant IntervalField.get_db_prep_value.
Modified: package/branches/pycon09/src/debconfvideo/web/pyconvideo/models.py
===================================================================
--- package/branches/pycon09/src/debconfvideo/web/pyconvideo/models.py 2009-03-21 18:37:06 UTC (rev 369)
+++ package/branches/pycon09/src/debconfvideo/web/pyconvideo/models.py 2009-03-21 19:09:50 UTC (rev 370)
@@ -5,23 +5,25 @@
import mx.DateTime
import debconfvideo
-def hms_to_seconds(hms):
- parts = hms.split(':')
- if len(parts) > 3:
- raise ValueError()
- hours, minutes, seconds = (3 - len(parts)) * [0] + parts
- return (int(hours) * 60 + int(minutes)) * 60 + float(seconds)
-
class IntervalField(models.CharField):
- def __init__(self, *args, **kwargs):
+ __metaclass__ = models.SubfieldBase
+ def __init__(self, precision=0, **kwargs):
+ self.__precision = precision
kwargs['max_length'] = 12
- super(IntervalField, self).__init__(*args, **kwargs)
+ super(IntervalField, self).__init__(**kwargs)
def db_type(self):
return 'INTERVAL'
def to_python(self, value):
- return value
- def get_db_prep_value(self, value):
- return '%g SECONDS' % hms_to_seconds(value)
+ if isinstance(value, mx.DateTime.DateTimeDeltaType):
+ days, hours, minutes, seconds = value.tuple()
+ return '%02d:%02d:%0*.*f' \
+ % (24 * days + hours,
+ minutes,
+ self.__precision and (3 + self.__precision) or 2,
+ self.__precision,
+ seconds)
+ else:
+ return value
class Conference(models.Model):
conference_id = models.AutoField(primary_key=True)
@@ -93,8 +95,8 @@
id = models.AutoField(primary_key=True)
event = models.ForeignKey(Event)
recording = models.ForeignKey(VideoRecording)
- start_time = IntervalField()
- end_time = IntervalField()
+ start_time = IntervalField(precision=2)
+ end_time = IntervalField(precision=2)
event_recording_base_name = \
models.SlugField(max_length=150, unique=True,
verbose_name='base name for target files')
More information about the Debconf-video-commits
mailing list