From d203b18d9de87d9e11904645a7d69f523d2353bf Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 14 Jul 2020 20:41:54 +0200 Subject: [PATCH 1/4] adding strava webhook management commands --- rowers/stravastuff.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index 18b12720..f01ee8a0 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -119,6 +119,29 @@ def strava_establish_push(): return response.status_code +def strava_list_push(): + url = "https://www.strava.com/api/v3/push_subscriptions" + params = { + 'client_id': STRAVA_CLIENT_ID, + 'client_secret': STRAVA_CLIENT_SECRET, + + } + response = requests.get(url,params=params) + + if response.status_code == 200: + data = response.json() + return [w['id'] for w in data] + return [] + +def strava_push_delete(id): + url = "https://www.strava.com/api/v3/push_subscriptions/{id}".format(id=id) + params = { + 'client_id': STRAVA_CLIENT_ID, + 'client_secret': STRAVA_CLIENT_SECRET, + } + response = requests.delete(url,json=params) + return response.status_code + def set_strava_athlete_id(user): r = Rower.objects.get(user=user) From f372986972d8e613414f478066209c735704d8f6 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 14 Jul 2020 20:44:57 +0200 Subject: [PATCH 2/4] fix --- rowers/dataprep.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 3e262d77..48d0793f 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1599,14 +1599,18 @@ def get_workouttype_from_fit(filename,workouttype='water'): import rowingdata.tcxtools as tcxtools def get_workouttype_from_tcx(filename,workouttype='water'): - d = tcxtools.tcx_getdict(filename) tcxtype = 'rowing' try: - tcxtype = d['Activities']['Activity']['@Sport'].lower() - if tcxtype == 'other': - tcxtype = 'rowing' - except KeyError: - return workouttype + d = tcxtools.tcx_getdict(filename) + try: + tcxtype = d['Activities']['Activity']['@Sport'].lower() + if tcxtype == 'other': + tcxtype = 'rowing' + except KeyError: + return workouttype + + except TypeError: + pass try: workouttype = mytypes.garminmappinginv[tcxtype.upper()] From c35b7f40be06674cb465342002edcf7a5fce12c1 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 15 Jul 2020 20:06:04 +0200 Subject: [PATCH 3/4] small bug fix --- requirements.txt | 19 ++++++++++++------- rowers/interactiveplots.py | 3 ++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index 88e58620..709ee448 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,6 @@ apipkg==1.5 appdirs==1.4.3 arcgis==1.6.0 arrow==0.13.1 -asgiref==3.2.7 asn1crypto==0.24.0 atomicwrites==1.3.0 attrs==19.1.0 @@ -29,7 +28,7 @@ cookies==2.2.1 coreapi==2.3.3 coreschema==0.0.4 coverage==4.5.3 -cryptography==2.6.1 +cryptography==2.9.2 cycler==0.10.0 dask==2.6.0 decorator==4.4.0 @@ -59,6 +58,7 @@ django-rq-dashboard==0.3.3 django-ses==1.0.0 django-shell-plus==1.1.7 django-social-share==1.3.2 +django-sslserver==0.22 django-suit==0.2.26 django-suit-rq==1.0.1 django-tz-detect==0.2.9 @@ -69,12 +69,14 @@ entrypoints==0.3 execnet==1.5.0 factory-boy==2.11.1 Faker==1.0.4 -fastparquet==0.3.2 +fastparquet==0.4.0 fitparse==1.1.0 Flask==1.0.2 fsspec==0.5.2 future==0.17.1 +garminconnect==0.1.14 geocoder==1.38.1 +geoip2==3.0.0 geos==0.2.1 grpcio==1.26.0 grpcio-tools==1.26.0 @@ -116,6 +118,7 @@ lxml==4.3.2 Markdown==3.0.1 MarkupSafe==1.1.1 matplotlib==3.0.3 +maxminddb==1.5.4 minify==0.1.4 MiniMockTest==0.5 mistune==0.8.4 @@ -152,10 +155,12 @@ protobuf==3.11.1 psycopg2==2.8.1 ptyprocess==0.6.0 py==1.8.0 -pyarrow==0.15.0 +pyarrow==0.17.1 pycairo==1.19.0 pycparser==2.19 +pygeoip==0.3.2 Pygments==2.3.1 +pyOpenSSL==19.1.0 pyparsing==2.3.1 pyrsistent==0.14.11 pyshp==2.1.0 @@ -184,7 +189,7 @@ rowingphysics==0.5.0 rq==0.13.0 rules==2.1 s3transfer==0.3.3 -scipy==1.2.1 +scipy==1.5.0 SecretStorage==3.1.1 Send2Trash==1.5.0 shell==1.0.1 @@ -193,7 +198,7 @@ simplejson==3.16.0 six==1.12.0 soupsieve==1.8 SQLAlchemy==1.3.1 -sqlparse==0.3.1 +sqlparse==0.3.0 stravalib==0.10.2 termcolor==1.1.0 terminado==0.8.1 @@ -209,7 +214,7 @@ tqdm==4.31.1 traitlets==4.3.2 units==0.7 uritemplate==3.0.0 -urllib3==1.24.1 +urllib3==1.25.9 VerbalExpressions==0.0.2 vine==1.3.0 wcwidth==0.1.7 diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index be22200f..4edbf3e1 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -191,7 +191,8 @@ def interactive_hr_piechart(df,rower,title,totalseconds=0): qry = 'hr < {ut2}'.format(ut2=rower.ut2) - frac_lut2 = totalseconds*df.query(qry)['deltat'].sum()/sumtimehr + qrydata = df.query(qry) + frac_lut2 = totalseconds*qrydata['deltat'].sum()/sumtimehr qry = '{ut2} <= hr < {ut1}'.format(ut1=rower.ut1,ut2=rower.ut2) From 8867dd578105683d0f22c52eee306d370ecab6bd Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 15 Jul 2020 20:21:38 +0200 Subject: [PATCH 4/4] bug fix dataprep --- rowers/dataprep.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 48d0793f..489be2ac 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -750,6 +750,7 @@ def clean_df_stats(datadf, workstrokesonly=True, ignorehr=True, return datadf def getpartofday(row,r): + workoutstartdatetime = row.rowdatetime try: latavg = row.df[' latitude'].mean() lonavg = row.df[' longitude'].mean() @@ -772,6 +773,7 @@ def getpartofday(row,r): workoutstartdatetime = row.rowdatetime except KeyError: timezone_str = r.defaulttimezone + workoutstartdatetime = row.rowdatetime h = workoutstartdatetime.astimezone(pytz.timezone(timezone_str)).hour