""" races/models.py --- models for managing competitive races """ import logging from django.db import models from django.utils import timezone log = logging.getLogger('dr_botzo.races') class Race(models.Model): """Track a race.""" key = models.CharField(max_length=16, primary_key=True) name = models.CharField(max_length=255) description = models.TextField() def __unicode__(self): """Text representation of a race.""" return u"{0:s} ({1:s})".format(self.name, self.key) class Racer(models.Model): """Track a racer in a race.""" nick = models.CharField(max_length=64) race = models.ForeignKey(Race) joined = models.BooleanField(default=False) started = models.BooleanField(default=False) finished = models.BooleanField(default=False) class Meta: unique_together = ('nick', 'race') def __unicode__(self): """Text representation of a race racer.""" return u"{0:s} in {1:s}".format(self.nick, self.race.name) class RaceUpdate(models.Model): """Periodic updates for a racer.""" race = models.ForeignKey(Race) racer = models.ForeignKey(Racer) update = models.TextField() event_time = models.DateTimeField(default=timezone.now) class Meta: ordering = ['event_time',] def __unicode__(self): """Text representation of a race update.""" local_time = timezone.localtime(self.event_time) return u"{0:s} in {1:s} @ {2:s}".format(self.racer.nick, self.race.name, local_time.strftime('%Y-%m-%d %H:%M:%S %Z')) # vi:tabstop=4:expandtab:autoindent