From f1a05db1e477165ebfeaa852a90b5d12ec2daf27 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 14 Sep 2017 17:25:26 +0200 Subject: [PATCH] some bug fixing for invalid TCX files --- rowers/dataprep.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 33f70b50..223ad583 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -581,8 +581,12 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', try: latavg = row.df[' latitude'].mean() lonavg = row.df[' longitude'].mean() + tf = TimezoneFinder() - timezone_str = tf.timezone_at(lng=lonavg,lat=latavg) + try: + timezone_str = tf.timezone_at(lng=lonavg,lat=latavg) + except ValueError: + timezone_str = 'UTC' if timezone_str == None: timezone_str = tf.closest_timezone_at(lng=lonavg, lat=latavg) @@ -613,6 +617,12 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', else: privacy = 'visible' + # checking for inf values + + totaldist = np.nan_to_num(totaldist) + maxhr = np.nan_to_num(maxhr) + averagehr = np.nan_to_num(averagehr) + # check for duplicate start times and duration ws = Workout.objects.filter(startdatetime=workoutstartdatetime, distance=totaldist, @@ -621,12 +631,8 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', message = "Warning: This workout probably already exists in the database" privacy = 'hidden' - # checking for inf values - totaldist = np.nan_to_num(totaldist) - maxhr = np.nan_to_num(maxhr) - averagehr = np.nan_to_num(averagehr) - + w = Workout(user=r,name=title,date=workoutdate, workouttype=workouttype, @@ -650,11 +656,14 @@ def save_workout_database(f2,r,dosmooth=True,workouttype='rower', # delta,cpvalues,avgpower = datautils.getsinglecp(row.df) thesecs = totaltime maxt = 1.05*thesecs - logarr = datautils.getlogarr(maxt) - dfgrouped = df.groupby(['workoutid']) - delta,cpvalues,avgpower = datautils.getcp(dfgrouped,logarr) + if maxt > 0: + logarr = datautils.getlogarr(maxt) + dfgrouped = df.groupby(['workoutid']) + delta,cpvalues,avgpower = datautils.getcp(dfgrouped,logarr) - res,btvalues = utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3,r.cpratio) + res,btvalues = utils.isbreakthrough(delta,cpvalues,r.p0,r.p1,r.p2,r.p3,r.cpratio) + else: + res = 0 if res: isbreakthrough = True res = datautils.updatecp(delta,cpvalues,r)