From 6e73ab2d698cd05782361ac51a97be98663636d7 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 22 Jun 2018 17:02:51 +0200 Subject: [PATCH 1/4] bug fix interval coloring --- rowers/interactiveplots.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index fc1e88c6..057c97d0 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -2214,16 +2214,18 @@ def interactive_chart(id=0,promember=0,intervaldata = {}): intervaldf = pd.DataFrame(intervaldata) intervaldf['itime'] = intervaldf['itime']*1.e3 intervaldf['time'] = intervaldf['itime'].cumsum() - intervaldf['time_r'] = intervaldf['time'] +intervaldf['itime'].shift(-1) - intervaldf['value'] = 10 + intervaldf['time'] = intervaldf['time'].shift(1) + intervaldf.ix[0,'time'] = 0 + intervaldf['time_r'] = intervaldf['time'] +intervaldf['itime'] + intervaldf['value'] = 100 mask = intervaldf['itype'] == 3 - intervaldf.loc[mask,'value'] = 45 + intervaldf.loc[mask,'value'] = 0 intervaldf['bottom'] = 10 intervalsource = ColumnDataSource( intervaldf ) - + plot.quad(left='time',top='value',bottom='bottom', right='time_r',source=intervalsource,color='mediumvioletred', y_range_name='spmax',fill_alpha=0.2,line_alpha=0.2) From a2c0048ba1dde0247a847a0f0d43df2d44c6ac66 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 25 Jun 2018 10:22:39 +0200 Subject: [PATCH 2/4] small bug fixes --- rowers/stravastuff.py | 7 ++++++- rowers/views.py | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index c14e6817..c502b2f0 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -38,6 +38,11 @@ from stravalib.exc import ActivityUploadFailed,TimeoutExceeded from rowsandall_app.settings import C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET, STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET +try: + from json.decoder import JSONDecodeError +except ImportError: + JSONDecodeError = ValueError + # Exponentially weighted moving average # Used for data smoothing of the jagged data obtained by Strava # See bitbucket issue 72 @@ -106,7 +111,7 @@ def get_token(code): try: token_json = response.json() thetoken = token_json['access_token'] - except KeyError: + except (KeyError,JSONDecodeError): thetoken = 0 return [thetoken] diff --git a/rowers/views.py b/rowers/views.py index c6e5b1e9..ab887870 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -1409,8 +1409,11 @@ def add_workout_from_runkeeperdata(user,importid,data): unixtime = cum_time+starttimeunix - unixtime[0] = starttimeunix - + try: + unixtime[0] = starttimeunix + except IndexError: + return (0,'No data to import') + df['TimeStamp (sec)'] = unixtime From 19ded52e572ffe62c715722f6b6ca1e34d7bce5b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 25 Jun 2018 11:46:12 +0200 Subject: [PATCH 3/4] missing request info --- rowers/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/views.py b/rowers/views.py index ab887870..751d7c69 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -11141,7 +11141,7 @@ def workout_split_view(request,id=id): r,row,splitsecond,splitmode ) except IndexError: - messages.error("Something went wrong in Split") + messages.error(request,"Something went wrong in Split") for message in mesgs: messages.info(request,message) From 84cba40065d0965788611aa8337ff80b3eac642f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 25 Jun 2018 12:52:22 +0200 Subject: [PATCH 4/4] added workstrokesonly keyword to empower force curve --- rowers/interactiveplots.py | 3 ++- rowers/views.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 057c97d0..8e0ac7b4 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -328,7 +328,8 @@ def interactive_forcecurve(theworkouts,workstrokesonly=False): 'peakforceangle','peakforce','spm','distance', 'workoutstate','driveenergy'] - rowdata = dataprep.getsmallrowdata_db(columns,ids=ids) + rowdata = dataprep.getsmallrowdata_db(columns,ids=ids, + workstrokesonly=workstrokesonly) rowdata.dropna(axis=1,how='all',inplace=True) rowdata.dropna(axis=0,how='any',inplace=True) diff --git a/rowers/views.py b/rowers/views.py index 751d7c69..33c72f47 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3368,7 +3368,7 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False): workstrokesonly = True else: workstrokesonly = False - + script,div,js_resources,css_resources = interactive_forcecurve([row], workstrokesonly=workstrokesonly)