diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 0d3303b0..ceb22158 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1111,6 +1111,8 @@ def calculate_goldmedalstandard(rower,workout,recurrance=True): if df.empty and recurrance: df, delta, cpvalues = setcp(workout,recurrance=False) + if df.empty: + return 0,0 age = calculate_age(rower.birthdate,today=workout.date) @@ -1209,9 +1211,15 @@ def setcp(workout,background=False,recurrance=True): filename = 'media/cpdata_{id}.parquet.gz'.format(id=workout.id) strokesdf = getsmallrowdata_db(['power','workoutid','time'],ids = [workout.id]) + try: + if strokesdf['power'].std()==0: + return pd.DataFrame(),pd.Series(),pd.Series() + except KeyError: + return pd.DataFrame(),pd.Series(),pd.Series() + if background: job = myqueue(queuelow,handle_setcp,strokesdf,filename,workout.id) - return job.id + return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(),pd.Series() if not strokesdf.empty: @@ -1492,7 +1500,6 @@ def checkduplicates(r,workoutdate,workoutstartdatetime,workoutenddatetime): t = ww.duration delta = datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second) enddatetime = ww.startdatetime+delta - print(enddatetime,workoutstartdatetime) if enddatetime > workoutstartdatetime: ws2.append(ww) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index d8b0dc06..45a217a5 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -171,7 +171,7 @@ def build_goldmedalstandards(workouts,kfitness): else: goldmedalstandards.append(0) goldmedaldurations.append(0) - workoutdt.append(arrow.get(w.startdatetime).datetime) + workoutdt.append(arrow.get(w.date).datetime) df = pd.DataFrame({ 'workout':ids, @@ -180,8 +180,6 @@ def build_goldmedalstandards(workouts,kfitness): 'goldmedalduration':goldmedaldurations, }) - - df.sort_values(['workoutdt'],inplace=True) #for id, row in df.iterrows(): @@ -203,6 +201,7 @@ def build_goldmedalstandards(workouts,kfitness): ids = [w.id for w in workouts.filter(date__gte=w.date-datetime.timedelta(days=90), date__lte=w.date)] + powerdf = df[df['workout'].isin(ids)] indexmax = powerdf['goldmedalstandard'].idxmax() theid = powerdf.loc[indexmax,'workout'] @@ -1837,6 +1836,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None): mask = df['testpower'].isnull() dates = df.mask(mask)['date'].dropna().values testpower = df.mask(mask)['testpower'].dropna().values + ids = df.mask(mask)['id'].dropna().values outids = df.mask(mask)['id'].dropna().unique() @@ -1854,8 +1854,11 @@ def goldmedalscorechart(user,startdate=None,enddate=None): previous = 0 for i in range(len(dates)): + id = ids[i] + w = Workout.objects.get(id=id) dd = str(dates[i]) - td.append(arrow.get(dd).datetime) + #td.append(arrow.get(dd).datetime) + td.append(arrow.get(w.date).datetime) markerscore.append(testpower[i]) markerduration.append(testduration[i]) score.append(np.nan) @@ -1875,6 +1878,7 @@ def goldmedalscorechart(user,startdate=None,enddate=None): markerduration.append(np.nan) duration.append(np.nan) + df = pd.DataFrame({ 'markerscore':markerscore, 'markerduration':markerduration,