From 98a62e6019a33ebfe7fdce0f89580bd8a22a9807 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 7 Dec 2020 22:06:04 +0100 Subject: [PATCH] bug fixes and adding data download --- rowers/dataprep.py | 26 +++++++++++++++++++++++++- rowers/interactiveplots.py | 8 ++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 12a7acea..1d18c90a 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -8,6 +8,7 @@ from __future__ import unicode_literals from __future__ import unicode_literals, absolute_import from rowers.models import ( Workout, Team, CalcAgePerformance,C2WorldClassAgePerformance, + User ) import pytz @@ -325,7 +326,9 @@ def workout_summary_to_df( startdate=datetime.datetime(1970,1,1), enddate=timezone.now()+timezone.timedelta(days=1)): - ws = Workout.objects.filter(user=rower).order_by("startdatetime") + ws = Workout.objects.filter( + user=rower,date__gte=startdate,date__lte=enddate + ).order_by("startdatetime") types = [] names = [] @@ -339,6 +342,9 @@ def workout_summary_to_df( notes = [] tcx_links = [] csv_links = [] + workout_links = [] + goldstandards = [] + goldstandarddurations = [] rscores = [] trimps = [] @@ -361,12 +367,20 @@ def workout_summary_to_df( id=encoder.encode_hex(w.id) ) csv_links.append(csv_link) + workout_link = SITE_URL+'/rowers/workout/{id}/'.format( + id=encoder.encode_hex(w.id) + ) + workout_links.append(workout_link) trimps.append(workout_trimp(w)[0]) rscore = workout_rscore(w) rscores.append(int(rscore[0])) + goldstandard,goldstandardduration = workout_goldmedalstandard(w) + goldstandards.append(int(goldstandard)) + goldstandarddurations.append(int(goldstandardduration)) df = pd.DataFrame({ 'name':names, + 'link':workout_links, 'date':startdatetimes, 'timezone':timezones, 'type':types, @@ -380,6 +394,8 @@ def workout_summary_to_df( 'Stroke Data CSV':csv_links, 'TRIMP Training Load':trimps, 'TSS Training Load':rscores, + 'GS':goldstandards, + 'GS_secs':goldstandarddurations, }) return df @@ -1026,6 +1042,14 @@ from rowers.datautils import p0 from rowers.utils import calculate_age from scipy import optimize +def get_workoutsummaries(userid,startdate): + u = User.objects.get(id=userid) + r = u.rower + df = workout_summary_to_df(r,startdate=startdate) + df = df.sort_values('date') + + return df + def workout_goldmedalstandard(workout): if workout.goldmedalstandard > 0: return workout.goldmedalstandard,workout.goldmedalseconds diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 0c183790..5012ba5b 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -209,7 +209,7 @@ def get_testpower(workouts,fitnesstestsecs,kfitness): fatigues.append(np.nan) fitnesses.append(np.nan) - return dates,testpower,fatigues,fitnesses + return dates,testpower, testduration,fatigues,fitnesses @@ -1714,6 +1714,7 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7, fitnesses = [] dates = [] testpower = [] + testduration = [] modelchoice = 'coggan' p0 = 0 @@ -1722,11 +1723,10 @@ def performance_chart(user,startdate=None,enddate=None,kfitness=42,kfatigue=7, - - fatigues,fitnesses,dates,testpower,impulses = getfatigues(fatigues, + fatigues,fitnesses,dates,testpower,testduration,impulses = getfatigues(fatigues, fitnesses, dates, - testpower, + testpower,testduration, startdate,enddate, user,metricchoice, kfatigue,kfitness)