From 314219e8d9cfc9522e9128cd7970a0cd5dfc6e53 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 14 Apr 2019 21:48:19 -0400 Subject: [PATCH] fixed strava better --- rowers/stravastuff.py | 66 ++++++++++---------------- rowers/tests/test_aworkouts.py | 6 ++- rowers/tests/testdata/testdata.csv.gz | Bin 12534 -> 12534 bytes rowers/utils.py | 7 ++- 4 files changed, 35 insertions(+), 44 deletions(-) diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index 65491db1..cb4f2c24 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -308,63 +308,47 @@ def get_workout(user,stravaid): except KeyError: startdatetime = timezone.now() - spmjson = get_strava_stream(r,'cadence',stravaid) - hrjson = get_strava_stream(r,'heartrate',stravaid) - timejson = get_strava_stream(r,'time',stravaid) - velojson = get_strava_stream(r,'velocity_smooth',stravaid) - distancejson = get_strava_stream(r,'distance',stravaid) - latlongjson = get_strava_stream(r,'latlng',stravaid) - powerjson = get_strava_stream(r,'power',stravaid) + spm = get_strava_stream(r,'cadence',stravaid) + hr = get_strava_stream(r,'heartrate',stravaid) + t = get_strava_stream(r,'time',stravaid) + velo = get_strava_stream(r,'velocity_smooth',stravaid) + d = get_strava_stream(r,'distance',stravaid) + coords = get_strava_stream(r,'latlng',stravaid) + power = get_strava_stream(r,'power',stravaid) - try: - t = np.array(timejson.json()[0]['data']) - nr_rows = len(t) - d = np.array(distancejson.json()[0]['data']) - if nr_rows == 0: - return (0,"Error: Time data had zero length") + nr_rows = len(t) - except IndexError: + if nr_rows == 0: + return (0,"Error: Time data had zero length") + + if d is None: d = 0*t - # return (0,"Error: No Distance information in the Strava data") - except KeyError: - return (0,"something went wrong with the Strava import") - try: - spm = np.array(spmjson.json()[0]['data']) - except: + if spm is None: spm = np.zeros(nr_rows) - try: - power = np.array(powerjson.json()[0]['data']) - except IndexError: + if power is None: power = np.zeros(nr_rows) - try: - hr = np.array(hrjson.json()[0]['data']) - except IndexError: - hr = np.zeros(nr_rows) - except KeyError: + if hr is None: hr = np.zeros(nr_rows) - try: - velo = np.array(velojson.json()[0]['data']) - except IndexError: - velo = np.zeros(nr_rows) - except KeyError: + if velo is None: velo = np.zeros(nr_rows) dt = np.diff(t).mean() wsize = round(5./dt) velo2 = ewmovingaverage(velo,wsize) - coords = np.array(latlongjson.json()[0]['data']) - try: - lat = coords[:,0] - lon = coords[:,1] - except IndexError: - lat = np.zeros(len(t)) - lon = np.zeros(len(t)) - except KeyError: + + if coords is not None: + try: + lat = coords[:,0] + lon = coords[:,1] + except IndexError: + lat = np.zeros(len(t)) + lon = np.zeros(len(t)) + else: lat = np.zeros(len(t)) lon = np.zeros(len(t)) diff --git a/rowers/tests/test_aworkouts.py b/rowers/tests/test_aworkouts.py index 7c70314a..1b23d1b6 100644 --- a/rowers/tests/test_aworkouts.py +++ b/rowers/tests/test_aworkouts.py @@ -239,10 +239,12 @@ class WorkoutViewTest(TestCase): response = self.c.get(url,follow=True) self.assertEqual(response.status_code,200) - + @patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.getsmallrowdata_db') - def test_waterworkout_view(self, mocked_sqlalchemy, mocked_getsmallrowdata_db): + # @patch('rowers.weather.requests.get', side_effect=mocked_requests) + def test_waterworkout_view(self, + mocked_sqlalchemy, mocked_getsmallrowdata_db): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index d39a45bbb615ce3b49deb71398a0288af5e7328b..2182c2eca0bc37c86b282c059a82b9a2d16a05c8 100644 GIT binary patch delta 15 WcmeyC_$`r5zMF&N+@p@ diff --git a/rowers/utils.py b/rowers/utils.py index db40c9cb..92b3ff17 100644 --- a/rowers/utils.py +++ b/rowers/utils.py @@ -490,8 +490,13 @@ def get_strava_stream(r,metric,stravaid,series_type='time',fetchresolution='high s = requests.get(url,headers=headers) + + for data in s.json(): + y = None + if data['type'] == metric: + return np.array(data['data']) - return s + return None def allmonths(startdate,enddate): d = startdate