Private
Public Access
1
0

adding runkeeper, fixing sporttracks bugs

This commit is contained in:
Sander Roosendaal
2020-03-11 17:55:07 +01:00
parent 35db5a3e2a
commit 2bc277beba
4 changed files with 35 additions and 3 deletions

View File

@@ -7,6 +7,12 @@ from __future__ import unicode_literals, absolute_import
from rowers.imports import *
import re
import django_rq
queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
queuehigh = django_rq.get_queue('low')
from rowers.utils import myqueue
from rowers.rower_rules import is_workout_user
from rowsandall_app.settings import (
@@ -276,7 +282,7 @@ def default(o):
if isinstance(o, numpy.int64): return int(o)
raise TypeError
def workout_runkeeper_upload(user,w):
def workout_runkeeper_upload(user,w,asynchron=False):
message = "Uploading to Runkeeper"
rkid = 0
@@ -301,6 +307,10 @@ def workout_runkeeper_upload(user,w):
'Content-Length':'nnn'}
url = "https://api.runkeeper.com/fitnessActivities"
if asynchron:
job = myqueue(queue,handle_runkeeper_sync,
w.id,url,headers,json.dumps(data,default=default))
return "Asynchronous sync",0
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))
# check for duplicate error first

View File

@@ -8,6 +8,12 @@ from __future__ import unicode_literals, absolute_import
import numpy
import django_rq
queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
queuehigh = django_rq.get_queue('low')
from rowers.utils import myqueue
from rowers.imports import *
import re
from rowsandall_app.settings import (
@@ -280,7 +286,8 @@ def workout_sporttracks_upload(user,w,asynchron=False):
url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json"
if asynchron:
job = myqueue(w.id,url,headers,json.dumps(data,default=default))
job = myqueue(queue,handle_sporttracks_sync,
w.id,url,headers,json.dumps(data,default=default))
return "Asynchronous sync",0
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))

View File

@@ -151,6 +151,21 @@ def handle_sporttracks_sync(workoutid,url,headers,data,debug=False,**kwargs):
res = update_workout_field_sql(workoutid,'uploadedtosporttracks',id,debug=debug)
app.task
def handle_runkeeper_sync(workoutid,url,headers,data,debug=False,**kwargs):
response = requests.post(url,headers=headers,data=data)
if response.status_code not in [200,201]:
return 0
t = response.json()
uri = t['uris'][0]
regex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/(\d+)\.json$'
m = re.compile(regex).match(uri).group(1)
id = int(m)
res = update_workout_field_sql(workoutid,'uploadedtorunkeeper',id,debug=debug)
@app.task

View File

@@ -555,7 +555,7 @@ def do_sync(w,options, quick=False):
if ('upload_to_RunKeeper' in options and options['upload_to_RunKeeper']) or (w.user.runkeeper_auto_export and ispromember(w.user.user)):
try:
message,id = runkeeperstuff.workout_runkeeper_upload(
w.user.user,w
w.user.user,w,asynchron=True,
)
except NoTokenError:
message = "Please connect to Runkeeper first"