diff --git a/rowers/models.py b/rowers/models.py index eebab17c..86e7dea6 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -49,6 +49,30 @@ database_url = 'mysql://{user}:{password}@{host}:{port}/{database_name}'.format( if settings.DEBUG or user=='': database_url = 'sqlite:///db.sqlite3' + +# model for Power Zone names +class PowerZonesField(models.TextField): + __metaclass__ = models.SubfieldBase + + def __init__(self, *args, **kwargs): + self.token = kwargs.pop('token',',') + super(PowerZonesField, self).__init__(*args, **kwargs) + + def to_python(self, value): + if not value: return + if isinstance(value, list): + return value + return value.split(self.token) + + def get_db_prep_value(self, value, connection, prepared=False): + if not value: return + assert(isinstance(value, list) or isinstance(value, tuple)) + return self.token.join([unicode(s) for s in value]) + + def value_to_string(self, obj): + value = self._get_val_from_obj(obj) + return self.get_deb_prep_value(value) + # For future Team functionality class Team(models.Model): name = models.CharField(max_length=150) @@ -79,6 +103,8 @@ class Rower(models.Model): pw_at = models.IntegerField(default=160,verbose_name="AT Power") pw_tr = models.IntegerField(default=160,verbose_name="TR Power") pw_an = models.IntegerField(default=160,verbose_name="AN Power") + + powerzones = PowerZonesField(default=['UT3','UT2','UT1','AT','TR','AN']) c2token = models.CharField(default='',max_length=200,blank=True,null=True) tokenexpirydate = models.DateTimeField(blank=True,null=True)