diff --git a/rowers/datautils.py b/rowers/datautils.py index 7f8c1af4..c19e9b6b 100644 --- a/rowers/datautils.py +++ b/rowers/datautils.py @@ -13,6 +13,20 @@ from rowers.mytypes import otwtypes,otetypes,rowtypes #p0 = [500,350,10,8000] p0 = [190,200,33,16000] +# RPE to TSS +rpetotss = { + 1:20, + 2:30, + 3:40, + 4:50, + 5:60, + 6:70, + 7:80, + 8:100, + 9:120, + 10:140, +} + def updatecp(delta,cpvalues,r,workouttype='water'): if workouttype in otwtypes: p0 = r.p0 diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index d288ce0f..7e14edea 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -97,7 +97,7 @@ import rowers.c2stuff as c2stuff from rowers.metrics import axes,axlabels,yaxminima,yaxmaxima,get_yaxminima,get_yaxmaxima from rowers.utils import lbstoN -from rowers.datautils import p0 +from rowers.datautils import p0,rpetotss import rowers.datautils as datautils from pandas.core.groupby.groupby import DataError @@ -1650,18 +1650,29 @@ def getfatigues( if metricchoice == 'rscore': factor = 2.0 - for i in range(nrdays): + for i in range(nrdays+1): date = startdate+datetime.timedelta(days=i) ws = Workout.objects.filter(user=user.rower,date=date,duplicate=False) weight = 0 for w in ws: weight += factor*getattr(w,metricchoice) if getattr(w,metricchoice) <= 0: - if metricchoice == 'rscore' and w.hrtss != 0: + if metricchoice == 'rscore' and w.hrtss > 0: weight+= factor*w.hrtss else: trimp,hrtss = dataprep.workout_trimp(w) rscore,normp = dataprep.workout_rscore(w) + if w.rpe and w.rpe > 0: + dd = 3600*w.duration.hour+60*w.duration.minute+w.duration.second + dd = dd/3600 + weight += factor*rpetotss[w.rpe]*dd + if metricchoice == 'trimp' and w.trimp <= 0: + trimp,hrtss = dataprep.workout_trimp(w) + rscore,normp = dataprep.workout_rscore(w) + if w.rpe and w.rpe > 0: + dd = 3600*w.duration.hour+60*w.duration.minute+w.duration.second + dd = dd/3600 + weight += factor*rpetotss[w.rpe]*dd impulses.append(weight) diff --git a/rowers/models.py b/rowers/models.py index 0ef6dc5e..b7354d88 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2948,7 +2948,7 @@ class Workout(models.Model): normp = models.IntegerField(default=-1,blank=True) normv = models.FloatField(default=-1,blank=True) normw = models.FloatField(default=-1,blank=True) - goldmedalstandard = models.FloatField(default=-1,blank=True) + goldmedalstandard = models.FloatField(default=-1,blank=True,verbose_name='Gold Medal Standard') rpe = models.IntegerField(default=0,blank=True,choices=rpechoices, verbose_name='Rate of Perceived Exertion') diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index ac67ae44..093a32b5 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -585,12 +585,16 @@ def addmanual_view(request,raceid=0): weightcategory = form.cleaned_data['weightcategory'] adaptiveclass = form.cleaned_data['adaptiveclass'] distance = form.cleaned_data['distance'] + rpe = form.cleaned_data['rpe'] + if not rpe: + rpe = -1 notes = form.cleaned_data['notes'] thetimezone = form.cleaned_data['timezone'] private = form.cleaned_data['private'] avghr = metricsform.cleaned_data['avghr'] avgpwr = metricsform.cleaned_data['avgpwr'] avgspm = metricsform.cleaned_data['avgspm'] + try: ps = form.cleaned_data['plannedsession'] except KeyError: