better steps serializer
This commit is contained in:
@@ -207,6 +207,27 @@ class AlternativeEmails(models.TextField):
|
||||
value = self._get_val_from_obj(obj)
|
||||
return self.get_deb_prep_value(value)
|
||||
|
||||
# model for Planned Session Steps
|
||||
class PlannedSessionStepField(models.TextField):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(PlannedSessionStepField, self).__init__(*args, **kwargs)
|
||||
|
||||
def to_python(self, value):
|
||||
if not value: return
|
||||
return json.loads(value)
|
||||
|
||||
def from_db_value(self, value, expression, connection):
|
||||
if not value: return
|
||||
return json.loads(value)
|
||||
|
||||
def get_db_prep_value(self, value, connection, prepared=False):
|
||||
if not value: return
|
||||
return json.dumps(value)
|
||||
|
||||
def value_to_string(self, obj):
|
||||
value = self._get_val_from_obj(obj)
|
||||
return self.get_deb_prep_value(value)
|
||||
|
||||
# model for Power Zone names
|
||||
class PowerZonesField(models.TextField):
|
||||
# __metaclass__ = models.SubfieldBase
|
||||
@@ -2288,7 +2309,8 @@ class PlannedSession(models.Model):
|
||||
is_template = models.BooleanField(default=False)
|
||||
|
||||
fitfile = models.FileField(blank=True,null=True)
|
||||
steps_json = models.TextField(max_length=10000,default=None,blank=True,null=True)
|
||||
#steps_json = models.TextField(max_length=10000,default=None,blank=True,null=True)
|
||||
steps = PlannedSessionStepField(default={},null=True)
|
||||
interval_string = models.TextField(max_length=1000,default=None,blank=True,null=True,
|
||||
verbose_name='Interval String (optional)')
|
||||
|
||||
@@ -2308,11 +2330,11 @@ class PlannedSession(models.Model):
|
||||
|
||||
return stri
|
||||
|
||||
def update_json(self):
|
||||
def update_steps(self):
|
||||
# read file
|
||||
if self.fitfile:
|
||||
steps = steps_read_fit(settings.MEDIA_ROOT+'/'+self.fitfile.name)
|
||||
self.steps_json = json.dumps(steps)
|
||||
self.steps = steps
|
||||
|
||||
self.save()
|
||||
|
||||
@@ -2336,7 +2358,8 @@ class PlannedSession(models.Model):
|
||||
dct = trainingparser.parsetodict(self.interval_string)
|
||||
dct = [item for item in dct if item['value'] != 0]
|
||||
dct = trainingparser.tofitdict(dct)
|
||||
self.steps_json = json.dumps(dct)
|
||||
print(dct)
|
||||
self.steps = dct
|
||||
|
||||
|
||||
|
||||
@@ -2386,20 +2409,18 @@ class PlannedSession(models.Model):
|
||||
self.fitfile = None
|
||||
else:
|
||||
steps = steps_read_fit(settings.MEDIA_ROOT+'/'+self.fitfile.name)
|
||||
self.steps_json = json.dumps(steps)
|
||||
self.steps = steps
|
||||
|
||||
if self.steps_json and not self.fitfile:
|
||||
if self.steps and not self.fitfile:
|
||||
if self.pk is not None:
|
||||
filename = settings.MEDIA_ROOT+'/session'+encoder.encode_hex(self.pk)+'.fit'
|
||||
else:
|
||||
file = tempfile.NamedTemporaryFile(mode='w+b',suffix='.fit',dir=settings.MEDIA_ROOT)
|
||||
filename = file.name
|
||||
steps = json.loads(self.steps_json)
|
||||
steps = self.steps
|
||||
steps['filename'] = filename
|
||||
fitfile = steps_write_fit(steps)
|
||||
self.fitfile = fitfile
|
||||
self.steps_json = json.dumps(steps)
|
||||
|
||||
|
||||
super(PlannedSession,self).save(*args, **kwargs)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user