diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index d062d1b5..7e6ab4ec 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -3571,9 +3571,8 @@ def interactive_otwcpchart(powerdf, promember=0, rowername="", r=None, title = "Critical Power for "+rowername plot.title.text = title - #xaxis = plot.select(dict(type=Axis, layout="below")) #[0] - #print(xaxis) - #xaxis.formatter = PrintfTickFormatter() + plot.xaxis[0].formatter = PrintfTickFormatter(format="%5f") + hover = plot.select(dict(type=HoverTool)) @@ -5777,7 +5776,7 @@ def interactive_flex_chart2(id, r, promember=0, doclean=False, workstrokesonly=False) workstrokesonly = False - except TypeError: # pragma: no cover + except (KeyError, TypeError): # pragma: no cover workstrokesonly = False try: _ = rowdata[yparam2] @@ -5792,13 +5791,13 @@ def interactive_flex_chart2(id, r, promember=0, # test if we have drive energy try: _ = rowdata['driveenergy'].mean() - except KeyError: + except (KeyError, TypeError): rowdata['driveenergy'] = 500. # test if we have power try: _ = rowdata['power'].mean() - except KeyError: + except (KeyError, TypeError): rowdata['power'] = 50. # replace nans diff --git a/rowers/models.py b/rowers/models.py index 4c9318cb..2aeb6ecb 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3688,9 +3688,9 @@ def create_or_update_syncrecord(rower, workout, **kwargs): if workout: records = SyncRecord.objects.filter(workout=workout,rower=rower) - if records.count(): + try: record = records[0] - else: + except IndexError: records = SyncRecord.objects.filter(**kwargs,rower=rower) if records.count(): record = records[0] diff --git a/rowers/tasks.py b/rowers/tasks.py index d18a38fc..28491f0b 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -781,7 +781,7 @@ def handle_strava_sync(stravatoken, if 'LatLon' in tb: dologging('strava_fail.log', 'Trying temporary fix') failed = False - except (ActivityUploadFailed, stravalib.exc.RateLimitExceeded): # pragma: no cover + except (ActivityUploadFailed, stravalib.exc.RateLimitExceeded, JSONDecodeError): # pragma: no cover dologging( 'strava_fail.log', 'Strava upload failed for Workout {id}'.format(id=workoutid)) tb = traceback.format_exc() @@ -3276,17 +3276,17 @@ def handle_rp3_async_workout(userid, rp3token, rp3id, startdatetime, max_attempt waittime = 3 while not have_link: - response = requests.post( - url=graphql_url, - headers=headers, - json={'query': get_download_link} - ) - dologging('rp3_import.log',response.status_code) - - if response.status_code != 200: # pragma: no cover - have_link = True - try: + response = requests.post( + url=graphql_url, + headers=headers, + json={'query': get_download_link} + ) + dologging('rp3_import.log',response.status_code) + + if response.status_code != 200: # pragma: no cover + have_link = True + workout_download_details = pd.json_normalize( response.json()['data']['download']) dologging('rp3_import.log', response.json()) diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 0e0d46bf..b700405a 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ