Private
Public Access
1
0

fixed strava better

This commit is contained in:
Sander Roosendaal
2019-04-14 21:48:19 -04:00
parent 5139577cd9
commit 314219e8d9
4 changed files with 35 additions and 44 deletions

View File

@@ -308,63 +308,47 @@ def get_workout(user,stravaid):
except KeyError: except KeyError:
startdatetime = timezone.now() startdatetime = timezone.now()
spmjson = get_strava_stream(r,'cadence',stravaid) spm = get_strava_stream(r,'cadence',stravaid)
hrjson = get_strava_stream(r,'heartrate',stravaid) hr = get_strava_stream(r,'heartrate',stravaid)
timejson = get_strava_stream(r,'time',stravaid) t = get_strava_stream(r,'time',stravaid)
velojson = get_strava_stream(r,'velocity_smooth',stravaid) velo = get_strava_stream(r,'velocity_smooth',stravaid)
distancejson = get_strava_stream(r,'distance',stravaid) d = get_strava_stream(r,'distance',stravaid)
latlongjson = get_strava_stream(r,'latlng',stravaid) coords = get_strava_stream(r,'latlng',stravaid)
powerjson = get_strava_stream(r,'power',stravaid) power = get_strava_stream(r,'power',stravaid)
try: nr_rows = len(t)
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")
except IndexError: if nr_rows == 0:
return (0,"Error: Time data had zero length")
if d is None:
d = 0*t 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: if spm is None:
spm = np.array(spmjson.json()[0]['data'])
except:
spm = np.zeros(nr_rows) spm = np.zeros(nr_rows)
try: if power is None:
power = np.array(powerjson.json()[0]['data'])
except IndexError:
power = np.zeros(nr_rows) power = np.zeros(nr_rows)
try: if hr is None:
hr = np.array(hrjson.json()[0]['data'])
except IndexError:
hr = np.zeros(nr_rows)
except KeyError:
hr = np.zeros(nr_rows) hr = np.zeros(nr_rows)
try: if velo is None:
velo = np.array(velojson.json()[0]['data'])
except IndexError:
velo = np.zeros(nr_rows)
except KeyError:
velo = np.zeros(nr_rows) velo = np.zeros(nr_rows)
dt = np.diff(t).mean() dt = np.diff(t).mean()
wsize = round(5./dt) wsize = round(5./dt)
velo2 = ewmovingaverage(velo,wsize) velo2 = ewmovingaverage(velo,wsize)
coords = np.array(latlongjson.json()[0]['data'])
try: if coords is not None:
lat = coords[:,0] try:
lon = coords[:,1] lat = coords[:,0]
except IndexError: lon = coords[:,1]
lat = np.zeros(len(t)) except IndexError:
lon = np.zeros(len(t)) lat = np.zeros(len(t))
except KeyError: lon = np.zeros(len(t))
else:
lat = np.zeros(len(t)) lat = np.zeros(len(t))
lon = np.zeros(len(t)) lon = np.zeros(len(t))

View File

@@ -242,7 +242,9 @@ class WorkoutViewTest(TestCase):
@patch('rowers.dataprep.create_engine') @patch('rowers.dataprep.create_engine')
@patch('rowers.dataprep.getsmallrowdata_db') @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) login = self.c.login(username=self.u.username, password=self.password)
self.assertTrue(login) self.assertTrue(login)

Binary file not shown.

View File

@@ -491,7 +491,12 @@ def get_strava_stream(r,metric,stravaid,series_type='time',fetchresolution='high
s = requests.get(url,headers=headers) s = requests.get(url,headers=headers)
return s for data in s.json():
y = None
if data['type'] == metric:
return np.array(data['data'])
return None
def allmonths(startdate,enddate): def allmonths(startdate,enddate):
d = startdate d = startdate