Private
Public Access
1
0
This commit is contained in:
Sander Roosendaal
2022-02-16 11:13:14 +01:00
parent 2fb011e876
commit 4f48901c55
7 changed files with 76 additions and 160 deletions

View File

@@ -21,7 +21,7 @@ def workout_tp_upload_view(request, id=0):
r = getrower(request.user)
res = -1
try:
thetoken = tp_open(r.user)
_ = tp_open(r.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/tpauthorize/")
@@ -69,7 +69,6 @@ def workout_tp_upload_view(request, id=0):
# abundance of error logging here because there were/are some bugs
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
def workout_strava_upload_view(request, id=0):
message = ""
r = getrower(request.user)
w = get_workout_by_opaqueid(request, id)
result = -1
@@ -166,7 +165,7 @@ def rower_c2_authorize(request): # pragma: no cover
# Generate a random string for the state parameter
# Save it for use later to prevent xsrf attacks
state = str(uuid4())
# state = str(uuid4())
scope = "user:read,results:write"
params = {"client_id": C2_CLIENT_ID,
"response_type": "code",
@@ -195,7 +194,7 @@ def rower_strava_authorize(request): # pragma: no cover
# Generate a random string for the state parameter
# Save it for use later to prevent xsrf attacks
state = str(uuid4())
# state = str(uuid4())
params = {"client_id": STRAVA_CLIENT_ID,
"response_type": "code",
@@ -255,7 +254,7 @@ def rower_rp3_authorize(request): # pragma: no cover
# Generate a random string for the state parameter
# Save it for use later to prevent xsrf attacks
state = str(uuid4())
# state = str(uuid4())
params = {"client_id": RP3_CLIENT_KEY,
"response_type": "code",
"redirect_uri": RP3_REDIRECT_URI,
@@ -273,7 +272,7 @@ def rower_tp_authorize(request): # pragma: no cover
# Generate a random string for the state parameter
# Save it for use later to prevent xsrf attacks
state = str(uuid4())
# state = str(uuid4())
params = {"client_id": TP_CLIENT_KEY,
"response_type": "code",
"redirect_uri": TP_REDIRECT_URI,
@@ -291,7 +290,7 @@ def rower_c2_token_refresh(request):
r = getrower(request.user)
res = c2stuff.do_refresh_token(r.c2refreshtoken)
if res[0] != None:
if res[0] is not None:
access_token = res[0]
expires_in = res[1]
refresh_token = res[2]
@@ -465,15 +464,6 @@ def rower_process_polarcallback(request):
if user_id2 != user_id: # pragma: no cover
messages.error(request, 'Polar User ID error')
#expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
#r = getrower(request.user)
#r.polartoken = access_token
#r.polartokenexpirydate = expirydatetime
#r.polaruserid = user_id
# r.save()
if user_id2 == user_id:
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
messages.info(request, successmessage)
@@ -565,7 +555,7 @@ def workout_getnkworkout_all(request, startdatestring='', enddatestring=''):
after = str(int(after.timestamp()*1000))
try:
thetoken = nk_open(request.user)
_ = nk_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("rower_nk_authorize")
@@ -601,7 +591,7 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
return HttpResponseRedirect(url)
try:
thetoken = nk_open(request.user)
_ = nk_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/nkauthorize/")
@@ -664,17 +654,6 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
pass
knownnkids = uniqify(knownnkids+tombstones+parkedids)
newids = [nkid for nkid in nkids if not nkid in knownnkids]
nkdata = [{
'id': int(item['id']),
'elapsed_time':item['elapsedTime'],
'start_date':arrow.get(item['startTime']),
} for item in res.json()]
# for item in res.json():
# print(item['startTime'],arrow.get(item['startTime']),item['name'])
workouts = []
for item in res.json():
@@ -689,7 +668,6 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
seconds=int(float(item['elapsedTime'])/1000.)))
s = arrow.get(item['startTime'], tzinfo=r.defaulttimezone).format(
arrow.FORMAT_RFC850)
#s = arrow.get(item['startTime']).to(r.defaulttimezone).isoformat()
keys = ['id', 'distance', 'duration', 'starttime', 'name', 'new']
values = [i, d, ttot, s, n, nnn]
rs = dict(zip(keys, values))
@@ -708,9 +686,7 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
alldata[item['id']] = item
counter = 0
for nkid in nkids:
csvfilename = 'media/{code}_{nkid}.csv'.format(
code=uuid4().hex[:16], nkid=nkid)
result = myqueue(
_ = myqueue(
queue,
handle_nk_async_workout,
alldata,
@@ -722,7 +698,9 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
)
counter = counter+1
messages.info(
request, 'Your NK logbook workouts will be imported in the background. It may take a few minutes before it appears.')
request,
'Your NK logbook workouts will be imported in the background.'
' It may take a few minutes before it appears.')
url = reverse('workouts_view')
return HttpResponseRedirect(url)
except KeyError:
@@ -761,7 +739,7 @@ def workout_nkimport_view(request, userid=0, after=0, before=0):
def rower_process_stravacallback(request):
try:
code = request.GET['code']
scope = request.GET['scope']
_ = request.GET['scope']
except MultiValueDictKeyError: # pragma: no cover
try:
message = request.GET['error']
@@ -788,7 +766,7 @@ def rower_process_stravacallback(request):
r.stravarefreshtoken = refresh_token
r.save()
id = stravastuff.set_strava_athlete_id(r.user)
_ = stravastuff.set_strava_athlete_id(r.user)
successmessage = "Tokens stored. Good to go. Please check your import/export settings"
messages.info(request, successmessage)
@@ -911,9 +889,7 @@ def rower_process_testcallback(request): # pragma: no cover
res = ownapistuff.get_token(code)
access_token = res[0]
expires_in = res[1]
refresh_token = res[2]
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
text = "Access Token:\n"
text += access_token
@@ -930,7 +906,7 @@ def workout_rp3import_view(request, userid=0):
r = getrequestrower(request, userid=userid)
try:
thetoken = rp3stuff.rp3_open(request.user)
_ = rp3stuff.rp3_open(request.user)
except NoTokenError: # pragma: no cover
url = reverse('rower_rp3_authorize')
return HttpResponseRedirect(url)
@@ -950,17 +926,10 @@ def workout_rp3import_view(request, userid=0):
workouts_list = pd.json_normalize(res.json()['data']['workouts'])
try:
rp3ids = workouts_list['id'].values
except KeyError: # pragma: no cover
rp3ids = []
knownrp3ids = uniqify([
w.uploadedtorp3 for w in Workout.objects.filter(user=r)
])
newids = [rp3id for rp3id in rp3ids if not rp3id in knownrp3ids]
workouts = []
for key, data in workouts_list.iterrows():
@@ -1022,7 +991,7 @@ def workout_stravaimport_view(request, message="", userid=0):
# if r.user != request.user:
# messages.info(request,"You cannot import other people's workouts from Strava")
try:
thetoken = strava_open(request.user)
_ = strava_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
@@ -1069,8 +1038,6 @@ def workout_stravaimport_view(request, message="", userid=0):
knownstravaids = uniqify([
w.uploadedtostrava for w in Workout.objects.filter(user=r)
])
newids = [
stravaid for stravaid in stravaids if not stravaid in knownstravaids]
for item in res.json():
d = int(float(item['distance']))
@@ -1101,7 +1068,7 @@ def workout_stravaimport_view(request, message="", userid=0):
for stravaid in stravaids:
csvfilename = 'media/{code}_{stravaid}.csv'.format(
code=uuid4().hex[:16], stravaid=stravaid)
result = myqueue(
_ = myqueue(
queue,
fetch_strava_workout,
rower.stravatoken,
@@ -1111,8 +1078,9 @@ def workout_stravaimport_view(request, message="", userid=0):
rower.user.id
)
# done, redirect to workouts list
messages.info(request, 'Your Strava workouts will be imported in the background. It may take a few minutes before it appears.'.format(
stravaid=stravaid))
messages.info(request,
'Your Strava workouts will be imported in the background.'
' It may take a few minutes before it appears.')
url = reverse('workouts_view')
return HttpResponseRedirect(url)
except KeyError: # pragma: no cover
@@ -1166,15 +1134,11 @@ def strava_webhook_view(request):
# POST - does nothing so far
data = json.loads(request.body)
aspect_type = data['aspect_type']
object_type = data['object_type']
strava_owner = data['owner_id']
starttimeunix = data['event_time']
try:
aspect_type = data['aspect_type']
object_type = data['object_type']
strava_owner = data['owner_id']
starttimeunix = data['event_time']
_ = data['event_time']
except KeyError: # pragma: no cover
timestamp = time.strftime('%b-%d-%Y_%H%M', t)
with open('strava_webhooks.log', 'a') as f:
@@ -1322,14 +1286,10 @@ def garmin_summaries_view(request): # pragma: no cover
@csrf_exempt
def garmin_newfiles_ping(request): # pragma: no cover
t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t)
if request.method != 'POST':
return HttpResponse(status=200)
data = json.loads(request.body)
files = data['activityFiles']
for file in data['activityFiles']:
try:
garmintoken = file['userAccessToken']
@@ -1338,8 +1298,7 @@ def garmin_newfiles_ping(request): # pragma: no cover
callbackURL = file['callbackURL']
starttime = file['startTimeInSeconds']
fileType = file['fileType']
job = garmin_stuff.get_garmin_file(
r, callbackURL, starttime, fileType)
_ = garmin_stuff.get_garmin_file(r, callbackURL, starttime, fileType)
except Rower.DoesNotExist:
pass
except KeyError:
@@ -1375,12 +1334,9 @@ def garmin_details_view(request):
if request.method != 'POST': # pragma: no cover
return HttpResponse(status=200)
t = time.localtime()
timestamp = time.strftime('%b-%d-%Y_%H%M', t)
# POST request
data = json.loads(request.body)
result = garmin_stuff.garmin_workouts_from_details(data)
_ = garmin_stuff.garmin_workouts_from_details(data)
return HttpResponse(status=200)
@@ -1477,11 +1433,9 @@ def workout_sporttracksimport_view(request, message="", userid=0):
workouts = []
stids = [int(getidfromuri(item['uri'])) for item in res.json()['items']]
knownstids = uniqify([
w.uploadedtosporttracks for w in Workout.objects.filter(user=r)
])
newids = [stid for stid in stids if not stid in knownstids]
for item in res.json()['items']:
d = int(float(item['total_distance']))
i = int(getidfromuri(item['uri']))
@@ -1528,7 +1482,7 @@ def workout_sporttracksimport_view(request, message="", userid=0):
@login_required()
def c2listdebug_view(request, page=1, message=""): # pragma: no cover
try:
thetoken = c2_open(request.user)
_ = c2_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/c2authorize/")
@@ -1573,7 +1527,7 @@ def c2listdebug_view(request, page=1, message=""): # pragma: no cover
@login_required()
def workout_getc2workout_all(request, page=1, message=""): # pragma: no cover
try:
thetoken = c2_open(request.user)
_ = c2_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/c2authorize/")
@@ -1594,7 +1548,7 @@ def workout_getc2workout_all(request, page=1, message=""): # pragma: no cover
@login_required()
def workout_getrp3workout_all(request): # pragma: no cover
try:
thetoken = rp3_open(request.user)
_ = rp3_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/rp3authorize/")
@@ -1628,7 +1582,7 @@ def workout_c2import_view(request, page=1, userid=0, message=""):
return HttpResponseRedirect(url)
try:
thetoken = c2_open(request.user)
_ = c2_open(request.user)
except NoTokenError: # pragma: no cover
return HttpResponseRedirect("/rowers/me/c2authorize/")
@@ -1657,8 +1611,6 @@ def workout_c2import_view(request, page=1, userid=0, message=""):
pass
knownc2ids = uniqify(knownc2ids+tombstones+parkedids)
newids = [c2id for c2id in c2ids if not c2id in knownc2ids]
for item in res.json()['data']:
d = item['distance']
i = item['id']
@@ -1688,9 +1640,7 @@ def workout_c2import_view(request, page=1, userid=0, message=""):
alldata[item['id']] = item
counter = 0
for c2id in c2ids:
csvfilename = 'media/{code}_{c2id}.csv'.format(
code=uuid4().hex[:16], c2id=c2id)
result = myqueue(
_ = myqueue(
queue,
handle_c2_async_workout,
alldata,
@@ -1703,7 +1653,9 @@ def workout_c2import_view(request, page=1, userid=0, message=""):
counter = counter+1
# done, redirect to workouts list
messages.info(
request, 'Your Concept2 workouts will be imported in the background. It may take a few minutes before it appears.'.format(c2id=c2id))
request,
'Your Concept2 workouts will be imported in the background.'
' It may take a few minutes before it appears.')
url = reverse('workouts_view')
return HttpResponseRedirect(url)
except KeyError: # pragma: no cover
@@ -1784,16 +1736,14 @@ def workout_getrp3importview(request, externalid):
token = rp3stuff.rp3_open(r.user)
startdatetime = request.GET.get('startdatetime')
job = myqueue(queuehigh,
handle_rp3_async_workout,
r.user.id,
token,
externalid,
startdatetime,
20,
)
#id = rp3stuff.get_rp3_workout(r.user,externalid,startdatetime=startdatetime)
_ = myqueue(queuehigh,
handle_rp3_async_workout,
r.user.id,
token,
externalid,
startdatetime,
20,
)
messages.info(request, 'The workout will be imported in the background')
@@ -1844,7 +1794,7 @@ def workout_getsporttracksworkout_all(request):
knownstids = uniqify([
w.uploadedtosporttracks for w in Workout.objects.filter(user=r)
])
newids = [stid for stid in stids if not stid in knownstids]
newids = [stid for stid in stids if stid not in knownstids]
for sporttracksid in newids:
id = sporttracksstuff.get_workout(
request.user, sporttracksid)
@@ -1873,21 +1823,11 @@ def workout_getstravaworkout_next(request): # pragma: no cover
if (res.status_code != 200):
return 0
else:
stravaids = [int(item['id']) for item in res.json()]
alldata = {}
for item in res.json():
alldata[item['id']] = item
knownstravaids = uniqify([
w.uploadedtostrava for w in Workout.objects.filter(user=r)
])
newids = [
stravaid for stravaid in stravaids if not stravaid in knownstravaids]
theid = newids[0]
workoutid = stravastuff.create_async_workout(
_ = stravastuff.create_async_workout(
alldata, r.user, stravaid, debug=True)
url = reverse('workouts_view')