From 668debceeeb3cc6f5c2d207c589dcfe7f397d62a Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 30 Aug 2020 21:21:25 +0200 Subject: [PATCH] fixing some C2 bike erg related stuff --- rowers/c2stuff.py | 24 +++++++++++++++++++++++- rowers/dataprep.py | 2 +- rowers/views/importviews.py | 4 +++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index c7e2f248..06d141a6 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -268,7 +268,8 @@ def c2wc(weightclass): # Concept2 logbook sends over split data for each interval # We use it here to generate a custom summary # Some users complained about small differences -def summaryfromsplitdata(splitdata,data,filename,sep='|'): +def summaryfromsplitdata(splitdata,data,filename,sep='|',workouttype='rower'): + workouttype = workouttype.lower() totaldist = data['distance'] totaltime = data['time']/10. @@ -305,6 +306,11 @@ def summaryfromsplitdata(splitdata,data,filename,sep='|'): velo = totaldist/totaltime avgpower = 2.8*velo**(3.0) + if workouttype in ['bike','bikeerg']: + velo = velo/2. + avgpower = 2.8*velo**(3.0) + velo = velo*2 + try: restvelo = restdistance/resttime @@ -312,6 +318,10 @@ def summaryfromsplitdata(splitdata,data,filename,sep='|'): restvelo = 0 restpower = 2.8*restvelo**(3.0) + if workouttype in ['bike','bikeerg']: + restvelo = restvelo/2. + restpower = 2.8*restvelo**(3.0) + restvelo = restvelo*2 try: avgdps = totaldist/data['stroke_count'] @@ -398,6 +408,8 @@ def summaryfromsplitdata(splitdata,data,filename,sep='|'): if itime != 0: ivelo = idist/itime ipower = 2.8*ivelo**(3.0) + if workouttype in ['bike','bikeerg']: + ipower = 2.8*(ivelo/2.)**(3.0) else: ivelo = 0 ipower = 0 @@ -961,6 +973,7 @@ def add_workout_from_data(user,importid,data,strokedata, thetimezone = 'UTC' r = Rower.objects.get(user=user) + try: rowdatetime = iso8601.parse_date(data['date_utc']) except KeyError: @@ -969,6 +982,7 @@ def add_workout_from_data(user,importid,data,strokedata, rowdatetime = iso8601.parse_date(data['date']) + try: c2intervaltype = data['workout_type'] @@ -1090,10 +1104,18 @@ def add_workout_from_data(user,importid,data,strokedata, dosummary=True,dosmooth=False, ) + w = Workout.objects.get(id=id) + + w.duration = dataprep.totaltime_sec_to_string(totaltime) w.distance = totaldist + w.startdatetime = rowdatetime + w.starttime = rowdatetime.time() + w.date = rowdatetime.date() + w.save() + return id,message diff --git a/rowers/dataprep.py b/rowers/dataprep.py index d6acf5c9..21434cf8 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1129,7 +1129,7 @@ def create_row_df(r,distance,duration,startdatetime,workouttype='rower', df = pd.DataFrame({ 'TimeStamp (sec)': unixtime, - ' Horizontal (meters)': d, + ' Horizontal (meters)': d, ' Cadence (stokes/min)': spm, ' Stroke500mPace (sec/500m)':pace, ' ElapsedTime (sec)':elapsed, diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index e76482eb..34e073ef 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -1651,6 +1651,8 @@ def workout_getimportview(request,externalid,source = 'c2'): strokedata = res[1] data = res[0] + workouttype = mytypes.c2mappinginv[data['type']] + # Now works only for C2 try: @@ -1736,7 +1738,7 @@ def workout_getimportview(request,externalid,source = 'c2'): # splitdata (only for C2) if splitdata: - w.summary,sa,results = c2stuff.summaryfromsplitdata(splitdata,data,w.csvfilename) + w.summary,sa,results = c2stuff.summaryfromsplitdata(splitdata,data,w.csvfilename,workouttype=workouttype) w.save() from rowingdata.trainingparser import getlist