diff --git a/rowers/dataprep.py b/rowers/dataprep.py index a68f05c6..112be938 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1506,9 +1506,70 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', if workouttype in otwtypes: res, btvalues, res2 = utils.isbreakthrough( delta, cpvalues, r.p0, r.p1, r.p2, r.p3, r.cpratio) + cprange = r.cprange + firstdate = datetime.date.today()-datetime.timedelta(days=cprange) + + workouts = Workout.objects.filter( + date__gte=firstdate, + workouttype__in=otwtypes, + ) + + dd,cpcp,avgpower = fetchcp_new(r,workouts) + + powerdf = pd.DataFrame({ + 'Delta':dd, + 'CP':cpcp, + }) + + if powerdf.empty: + return('','
No valid data found
') + + powerdf = powerdf[powerdf['CP']>0] + powerdf.dropna(axis=0,inplace=True) + powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True) + powerdf.drop_duplicates(subset='Delta',keep='first',inplace=True) + + res = datautils.cpfit(powerdf) + if len(powerdf) != 0: + p1 = res[0] + r.p0 = p1[0] + r.p1 = p1[1] + r.p2 = p1[2] + r.p3 = p1[3] + r.cpratio = res[3] + r.save() + elif workouttype in otetypes: res, btvalues, res2 = utils.isbreakthrough( delta, cpvalues, r.ep0, r.ep1, r.ep2, r.ep3, r.ecpratio) + cprange = r.cprange + firstdate = datetime.date.today()-datetime.timedelta(days=cprange) + workouts = Workout.objects.filter( + date__gte=firstdate, + workouttype__in=otetypes, + ) + dd,cpcp,avgpower = fetchcp_new(r,workouts) + powerdf = pd.DataFrame({ + 'Delta':dd, + 'CP':cpcp, + }) + if powerdf.empty: + return('','No valid data found
') + + powerdf = powerdf[powerdf['CP']>0] + powerdf.dropna(axis=0,inplace=True) + powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True) + powerdf.drop_duplicates(subset='Delta',keep='first',inplace=True) + res = datautils.cpfit(powerdf) + if len(powerdf) != 0: + res = datautils.cpfit(powerdf) + p1 = res[0] + r.ep0 = p1[0] + r.ep1 = p1[1] + r.ep2 = p1[2] + r.ep3 = p1[3] + r.ecpratio = res[3] + r.save() else: res = 0 res2 = 0 @@ -1764,7 +1825,7 @@ def new_workout_from_file(r, f2, # for me to check if it is a bug, or a new file type # worth supporting if fileformat == 'gpx': - print('aap') + os.remove(f2) message = "GPX files support is on our roadmap. Check back soon." return (0, message, f2) @@ -2624,7 +2685,7 @@ def fix_newtons(id=0, limit=3000): peakforce = rowdata['peakforce'] if peakforce.mean() > limit: w = Workout.objects.get(id=id) - print("fixing ", id) + rowdata = rdata(w.csvfilename) if rowdata and len(rowdata.df): update_strokedata(w.id, rowdata.df)