passes checks in python3
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from statements import *
|
||||
from rowers.views.statements import *
|
||||
|
||||
|
||||
# Send workout to TP
|
||||
@@ -71,17 +71,17 @@ def workout_strava_upload_view(request,id=0):
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
|
||||
if (r.stravatoken == '') or (r.stravatoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
else:
|
||||
# ready to upload. Hurray
|
||||
# ready to upload. Hurray
|
||||
w = get_workout_permitted(request.user,id)
|
||||
r = w.user
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
try:
|
||||
tcxfile,tcxmessg = stravastuff.createstravaworkoutdata(w)
|
||||
tcxfile,tcxmessg = stravastuff.createstravaworkoutdata(w)
|
||||
if tcxfile:
|
||||
with open(tcxfile,'rb') as f:
|
||||
with open(tcxfile,'rb') as f:
|
||||
try:
|
||||
newnotes = w.notes+'\n from '+w.workoutsource+' via rowsandall.com'
|
||||
except TypeError:
|
||||
@@ -91,38 +91,38 @@ def workout_strava_upload_view(request,id=0):
|
||||
else:
|
||||
activity_type = mytypes.stravamapping[w.workouttype]
|
||||
|
||||
res,mes = stravastuff.handle_stravaexport(
|
||||
res,mes = stravastuff.handle_stravaexport(
|
||||
f,w.name,
|
||||
r.stravatoken,
|
||||
description=newnotes,
|
||||
r.stravatoken,
|
||||
description=newnotes,
|
||||
activity_type=activity_type)
|
||||
if res==0:
|
||||
messages.error(request,mes)
|
||||
w.uploadedtostrava = -1
|
||||
w.save()
|
||||
w.uploadedtostrava = -1
|
||||
w.save()
|
||||
try:
|
||||
os.remove(tcxfile)
|
||||
os.remove(tcxfile)
|
||||
except WindowsError:
|
||||
pass
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
return response
|
||||
|
||||
try:
|
||||
w.uploadedtostrava = res
|
||||
w.save()
|
||||
w.uploadedtostrava = res
|
||||
w.save()
|
||||
try:
|
||||
os.remove(tcxfile)
|
||||
os.remove(tcxfile)
|
||||
except WindowsError:
|
||||
pass
|
||||
url = reverse('workout_edit_view',kwargs={'id':w.id})
|
||||
|
||||
|
||||
messages.info(request,mes)
|
||||
except:
|
||||
except:
|
||||
with open("media/stravaerrors.log","a") as errorlog:
|
||||
errorstring = str(sys.exc_info()[0])
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
@@ -135,33 +135,33 @@ def workout_strava_upload_view(request,id=0):
|
||||
messages.error(request,message)
|
||||
w.uploadedtostrava = -1
|
||||
w.save()
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
|
||||
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
}
|
||||
)
|
||||
response = HttpResponseRedirect(url)
|
||||
except ActivityUploadFailed as e:
|
||||
message = "Strava Upload error: %s" % e
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
}
|
||||
)
|
||||
response = HttpResponseRedirect(url)
|
||||
except ActivityUploadFailed as e:
|
||||
message = "Strava Upload error: %s" % e
|
||||
messages.error(request,message)
|
||||
w.uploadedtostrava = -1
|
||||
w.save()
|
||||
os.remove(tcxfile)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
w.uploadedtostrava = -1
|
||||
w.save()
|
||||
os.remove(tcxfile)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
response = HttpResponseRedirect(url)
|
||||
|
||||
return response
|
||||
|
||||
return response
|
||||
|
||||
# Upload workout to Concept2 logbook
|
||||
@login_required()
|
||||
def workout_c2_upload_view(request,id=0):
|
||||
@@ -199,59 +199,59 @@ def workout_runkeeper_upload_view(request,id=0):
|
||||
r = w.user
|
||||
|
||||
try:
|
||||
thetoken = runkeeper_open(r.user)
|
||||
thetoken = runkeeper_open(r.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/runkeeperauthorize/")
|
||||
return HttpResponseRedirect("/rowers/me/runkeeperauthorize/")
|
||||
|
||||
# ready to upload. Hurray
|
||||
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
data = runkeeperstuff.createrunkeeperworkoutdata(w)
|
||||
data = runkeeperstuff.createrunkeeperworkoutdata(w)
|
||||
if not data:
|
||||
message = "Data error"
|
||||
messages.error(request,message)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':id,
|
||||
})
|
||||
kwargs = {
|
||||
'id':id,
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/vnd.com.runkeeper.NewFitnessActivity+json',
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/vnd.com.runkeeper.NewFitnessActivity+json',
|
||||
'Content-Length':'nnn'}
|
||||
|
||||
url = "https://api.runkeeper.com/fitnessActivities"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
url = "https://api.runkeeper.com/fitnessActivities"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
messages.error(request,message)
|
||||
w.uploadedtorunkeeper = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
runkeeperid = runkeeperstuff.getidfromresponse(response)
|
||||
w.uploadedtorunkeeper = runkeeperid
|
||||
w.save()
|
||||
w.uploadedtorunkeeper = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
runkeeperid = runkeeperstuff.getidfromresponse(response)
|
||||
w.uploadedtorunkeeper = runkeeperid
|
||||
w.save()
|
||||
url = reverse('workout_edit_view',
|
||||
kwargs={'id':encoder.encode_hex(w.id)})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_runkeeper_upload_view: %s - %s" % (s.reason,s.text)
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_runkeeper_upload_view: %s - %s" % (s.reason,s.text)
|
||||
messages.error(request,message)
|
||||
|
||||
|
||||
else:
|
||||
message = "You are not authorized to upload this workout"
|
||||
message = "You are not authorized to upload this workout"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -263,59 +263,59 @@ def workout_underarmour_upload_view(request,id=0):
|
||||
r = w.user
|
||||
|
||||
try:
|
||||
thetoken = underarmour_open(r.user)
|
||||
thetoken = underarmour_open(r.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
||||
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
||||
|
||||
# ready to upload. Hurray
|
||||
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
data = underarmourstuff.createunderarmourworkoutdata(w)
|
||||
data = underarmourstuff.createunderarmourworkoutdata(w)
|
||||
if not data:
|
||||
message = "Data error"
|
||||
messages.error(request,message)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
'Api-Key': UNDERARMOUR_CLIENT_KEY,
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/json',
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
|
||||
url = "https://api.ua.com/v7.1/workout/"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
url = "https://api.ua.com/v7.1/workout/"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
|
||||
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
messages.error(request,message)
|
||||
w.uploadedtounderarmour = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
underarmourid = underarmourstuff.getidfromresponse(response)
|
||||
w.uploadedtounderarmour = underarmourid
|
||||
w.save()
|
||||
w.uploadedtounderarmour = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
underarmourid = underarmourstuff.getidfromresponse(response)
|
||||
w.uploadedtounderarmour = underarmourid
|
||||
w.save()
|
||||
url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_underarmour_upload_view: %s " % s.reason
|
||||
messages.error(request,message)
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_underarmour_upload_view: %s " % s.reason
|
||||
messages.error(request,message)
|
||||
else:
|
||||
message = "You are not authorized to upload this workout"
|
||||
message = "You are not authorized to upload this workout"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -328,64 +328,64 @@ def workout_sporttracks_upload_view(request,id=0):
|
||||
r = w.user
|
||||
|
||||
try:
|
||||
thetoken = sporttracks_open(r.user)
|
||||
thetoken = sporttracks_open(r.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksauthorize/")
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksauthorize/")
|
||||
|
||||
|
||||
if (checkworkoutuser(request.user,w)):
|
||||
data = sporttracksstuff.createsporttracksworkoutdata(w)
|
||||
data = sporttracksstuff.createsporttracksworkoutdata(w)
|
||||
|
||||
if not data:
|
||||
message = "Data error"
|
||||
messages.error(request,message)
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/json'}
|
||||
authorizationstring = str('Bearer ' + thetoken)
|
||||
headers = {'Authorization': authorizationstring,
|
||||
'user-agent': 'sanderroosendaal',
|
||||
'Content-Type': 'application/json'}
|
||||
|
||||
url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json"
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data))
|
||||
|
||||
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
# check for duplicate error first
|
||||
if (response.status_code == 409 ):
|
||||
message = "Duplicate error"
|
||||
messages.error(request,message)
|
||||
w.uploadedtosporttracks = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
s= response.json()
|
||||
sporttracksid = sporttracksstuff.getidfromresponse(response)
|
||||
w.uploadedtosporttracks = sporttracksid
|
||||
w.save()
|
||||
w.uploadedtosporttracks = -1
|
||||
w.save()
|
||||
elif (response.status_code == 201 or response.status_code==200):
|
||||
s= response.json()
|
||||
sporttracksid = sporttracksstuff.getidfromresponse(response)
|
||||
w.uploadedtosporttracks = sporttracksid
|
||||
w.save()
|
||||
message = "Upload to SportTracks was successful"
|
||||
messages.info(request,message)
|
||||
|
||||
url = reverse('workout_edit_view',kwargs={'id':encoder.encode_hex(w.id)})
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_sporttracks_upload_view: %s" % s.reason
|
||||
messages.error(request,message)
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
message = "Something went wrong in workout_sporttracks_upload_view: %s" % s.reason
|
||||
messages.error(request,message)
|
||||
else:
|
||||
message = "You are not authorized to upload this workout"
|
||||
message = "You are not authorized to upload this workout"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(r.defaultlandingpage,
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
kwargs = {
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# Concept2 authorization
|
||||
# Concept2 authorization
|
||||
@login_required()
|
||||
def rower_c2_authorize(request):
|
||||
# Generate a random string for the state parameter
|
||||
@@ -411,7 +411,7 @@ def rower_strava_authorize(request):
|
||||
params = {"client_id": STRAVA_CLIENT_ID,
|
||||
"response_type": "code",
|
||||
"redirect_uri": STRAVA_REDIRECT_URI,
|
||||
"scope": "activity:write,activity:read_all"}
|
||||
"scope": "activity:write,activity:read_all"}
|
||||
|
||||
url = "https://www.strava.com/oauth/authorize?"+ urllib.urlencode(params)
|
||||
|
||||
@@ -427,7 +427,7 @@ def rower_polar_authorize(request):
|
||||
"response_type": "code",
|
||||
"redirect_uri": POLAR_REDIRECT_URI,
|
||||
"state": state,
|
||||
# "scope":"accesslink.read_all"
|
||||
# "scope":"accesslink.read_all"
|
||||
}
|
||||
url = "https://flow.polar.com/oauth2/authorization?" +urllib.urlencode(params)
|
||||
|
||||
@@ -445,7 +445,7 @@ def rower_runkeeper_authorize(request):
|
||||
|
||||
params = {"client_id": RUNKEEPER_CLIENT_ID,
|
||||
"response_type": "code",
|
||||
"state": state,
|
||||
"state": state,
|
||||
"redirect_uri": RUNKEEPER_REDIRECT_URI}
|
||||
|
||||
url = "https://runkeeper.com/apps/authorize?"+ urllib.urlencode(params)
|
||||
@@ -463,7 +463,7 @@ def rower_sporttracks_authorize(request):
|
||||
|
||||
params = {"client_id": SPORTTRACKS_CLIENT_ID,
|
||||
"response_type": "code",
|
||||
"state": state,
|
||||
"state": state,
|
||||
"redirect_uri": SPORTTRACKS_REDIRECT_URI}
|
||||
|
||||
url = "https://api.sporttracks.mobi/oauth2/authorize?"+ urllib.urlencode(params)
|
||||
@@ -499,7 +499,7 @@ def rower_tp_authorize(request):
|
||||
"response_type": "code",
|
||||
"redirect_uri": TP_REDIRECT_URI,
|
||||
"scope": "file:write",
|
||||
}
|
||||
}
|
||||
url = "https://oauth.trainingpeaks.com/oauth/authorize/?" +urllib.urlencode(params)
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
@@ -624,16 +624,16 @@ def rower_sporttracks_token_refresh(request):
|
||||
@login_required()
|
||||
def rower_process_callback(request):
|
||||
try:
|
||||
code = request.GET['code']
|
||||
res = c2stuff.get_token(code)
|
||||
code = request.GET['code']
|
||||
res = c2stuff.get_token(code)
|
||||
except MultiValueDictKeyError:
|
||||
message = "The resource owner or authorization server denied the request"
|
||||
message = "The resource owner or authorization server denied the request"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
access_token = res[0]
|
||||
if access_token == 0:
|
||||
message = res[1]
|
||||
@@ -643,7 +643,7 @@ def rower_process_callback(request):
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
|
||||
expires_in = res[1]
|
||||
refresh_token = res[2]
|
||||
@@ -893,24 +893,24 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
messages.info(request,"You cannot import other people's workouts from Strava")
|
||||
|
||||
try:
|
||||
thetoken = strava_open(request.user)
|
||||
thetoken = strava_open(request.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
|
||||
|
||||
res = stravastuff.get_strava_workout_list(request.user)
|
||||
|
||||
|
||||
if (res.status_code != 200):
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.stravatoken == '') or (r.stravatoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
message = "Something went wrong in workout_stravaimport_view"
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.stravatoken == '') or (r.stravatoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
message = "Something went wrong in workout_stravaimport_view"
|
||||
messages.error(request,message)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
workouts = []
|
||||
r = getrower(request.user)
|
||||
@@ -944,7 +944,7 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
])
|
||||
newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids]
|
||||
|
||||
for item in res.json():
|
||||
for item in res.json():
|
||||
d = int(float(item['distance']))
|
||||
i = item['id']
|
||||
if i in knownstravaids:
|
||||
@@ -956,9 +956,9 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
s = item['start_date']
|
||||
r = item['type']
|
||||
keys = ['id','distance','duration','starttime','type','name','new']
|
||||
values = [i,d,ttot,s,r,n,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
values = [i,d,ttot,s,r,n,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
@@ -974,13 +974,13 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
return render(request,'strava_list_import.html',
|
||||
{'workouts':workouts,
|
||||
return render(request,'strava_list_import.html',
|
||||
{'workouts':workouts,
|
||||
'rower':r,
|
||||
'active':'nav-workouts',
|
||||
'breadcrumbs':breadcrumbs,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
})
|
||||
|
||||
return HttpResponse(res)
|
||||
|
||||
@@ -989,32 +989,32 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
def workout_runkeeperimport_view(request,message="",userid=0):
|
||||
res = runkeeperstuff.get_runkeeper_workout_list(request.user)
|
||||
if (res.status_code != 200):
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.runkeepertoken == '') or (r.runkeepertoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/runkeeperauthorize/")
|
||||
message = "Something went wrong in workout_runkeeperimport_view"
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.runkeepertoken == '') or (r.runkeepertoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/runkeeperauthorize/")
|
||||
message = "Something went wrong in workout_runkeeperimport_view"
|
||||
messages.error(request,message)
|
||||
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
for item in res.json()['items']:
|
||||
d = int(float(item['total_distance']))
|
||||
i = getidfromuri(item['uri'])
|
||||
d = int(float(item['total_distance']))
|
||||
i = getidfromuri(item['uri'])
|
||||
ttot = str(datetime.timedelta(seconds=int(float(item['duration']))))
|
||||
s = item['start_time']
|
||||
r = item['type']
|
||||
keys = ['id','distance','duration','starttime','type']
|
||||
values = [i,d,ttot,s,r]
|
||||
keys = ['id','distance','duration','starttime','type']
|
||||
values = [i,d,ttot,s,r]
|
||||
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
@@ -1030,12 +1030,12 @@ def workout_runkeeperimport_view(request,message="",userid=0):
|
||||
r = getrower(request.user)
|
||||
|
||||
return render(request,'runkeeper_list_import.html',
|
||||
{'workouts':workouts,
|
||||
{'workouts':workouts,
|
||||
'rower':r,
|
||||
'active':'nav-workouts',
|
||||
'breadcrumbs':breadcrumbs,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
})
|
||||
|
||||
return HttpResponse(res)
|
||||
|
||||
@@ -1044,14 +1044,14 @@ def workout_runkeeperimport_view(request,message="",userid=0):
|
||||
def workout_underarmourimport_view(request,message="",userid=0):
|
||||
res = underarmourstuff.get_underarmour_workout_list(request.user)
|
||||
if (res.status_code != 200):
|
||||
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
||||
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
||||
|
||||
workouts = []
|
||||
items = res.json()['_embedded']['workouts']
|
||||
for item in items:
|
||||
s = item['start_datetime']
|
||||
s = item['start_datetime']
|
||||
i,r = underarmourstuff.get_idfromuri(request.user,item['_links'])
|
||||
n = item['name']
|
||||
n = item['name']
|
||||
try:
|
||||
d = item['aggregates']['distance_total']
|
||||
except KeyError:
|
||||
@@ -1061,11 +1061,11 @@ def workout_underarmourimport_view(request,message="",userid=0):
|
||||
except KeyError:
|
||||
ttot = 0
|
||||
|
||||
keys = ['id','distance','duration','starttime','type']
|
||||
values = [i,d,ttot,s,r]
|
||||
thedict = dict(zip(keys,values))
|
||||
keys = ['id','distance','duration','starttime','type']
|
||||
values = [i,d,ttot,s,r]
|
||||
thedict = dict(zip(keys,values))
|
||||
|
||||
workouts.append(thedict)
|
||||
workouts.append(thedict)
|
||||
|
||||
rower = getrower(request.user)
|
||||
breadcrumbs = [
|
||||
@@ -1080,12 +1080,12 @@ def workout_underarmourimport_view(request,message="",userid=0):
|
||||
]
|
||||
|
||||
return render(request,'underarmour_list_import.html',
|
||||
{'workouts':workouts,
|
||||
{'workouts':workouts,
|
||||
'breadcrumbs':breadcrumbs,
|
||||
'rower':rower,
|
||||
'active':'nav-workouts',
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
})
|
||||
|
||||
return HttpResponse(res)
|
||||
|
||||
@@ -1153,20 +1153,20 @@ def workout_sporttracksimport_view(request,message="",userid=0):
|
||||
|
||||
res = sporttracksstuff.get_sporttracks_workout_list(request.user)
|
||||
if (res.status_code != 200):
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.sporttrackstoken == '') or (r.sporttrackstoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksauthorize/")
|
||||
if (res.status_code == 401):
|
||||
r = getrower(request.user)
|
||||
if (r.sporttrackstoken == '') or (r.sporttrackstoken is None):
|
||||
s = "Token doesn't exist. Need to authorize"
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksauthorize/")
|
||||
else:
|
||||
return HttpResponseRedirect("/rowers/me/sporttracksrefresh/")
|
||||
message = "Something went wrong in workout_sporttracksimport_view"
|
||||
message = "Something went wrong in workout_sporttracksimport_view"
|
||||
messages.error(request,message)
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
r = getrower(request.user)
|
||||
@@ -1177,19 +1177,19 @@ def workout_sporttracksimport_view(request,message="",userid=0):
|
||||
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']))
|
||||
i = int(getidfromuri(item['uri']))
|
||||
if i in knownstids:
|
||||
nnn = ''
|
||||
else:
|
||||
nnn = 'NEW'
|
||||
n = item['name']
|
||||
ttot = str(datetime.timedelta(seconds=int(float(item['duration']))))
|
||||
s = item['start_time']
|
||||
r = item['type']
|
||||
keys = ['id','distance','duration','starttime','type','name','new']
|
||||
values = [i,d,ttot,s,r,n,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
n = item['name']
|
||||
ttot = str(datetime.timedelta(seconds=int(float(item['duration']))))
|
||||
s = item['start_time']
|
||||
r = item['type']
|
||||
keys = ['id','distance','duration','starttime','type','name','new']
|
||||
values = [i,d,ttot,s,r,n,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
@@ -1205,55 +1205,55 @@ def workout_sporttracksimport_view(request,message="",userid=0):
|
||||
]
|
||||
|
||||
return render(request,'sporttracks_list_import.html',
|
||||
{'workouts':workouts,
|
||||
{'workouts':workouts,
|
||||
'breadcrumbs':breadcrumbs,
|
||||
'active':'nav-workouts',
|
||||
'rower':r,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
})
|
||||
|
||||
return HttpResponse(res)
|
||||
|
||||
|
||||
# List of workouts on Concept2 logbook. This view only used for debugging
|
||||
@login_required()
|
||||
def c2listdebug_view(request,page=1,message=""):
|
||||
try:
|
||||
thetoken = c2_open(request.user)
|
||||
thetoken = c2_open(request.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
res = c2stuff.get_c2_workout_list(request.user,page=page)
|
||||
|
||||
if (res.status_code != 200):
|
||||
message = "Something went wrong in workout_c2import_view (C2 token renewal)"
|
||||
message = "Something went wrong in workout_c2import_view (C2 token renewal)"
|
||||
messages.error(request,message)
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
workouts = []
|
||||
workouts = []
|
||||
|
||||
for item in res.json()['data']:
|
||||
d = item['distance']
|
||||
i = item['id']
|
||||
ttot = item['time_formatted']
|
||||
s = item['date']
|
||||
r = item['type']
|
||||
s2 = item['source']
|
||||
c = item['comments']
|
||||
keys = ['id','distance','duration','starttime','rowtype','source','comment']
|
||||
values = [i,d,ttot,s,r,s2,c]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
for item in res.json()['data']:
|
||||
d = item['distance']
|
||||
i = item['id']
|
||||
ttot = item['time_formatted']
|
||||
s = item['date']
|
||||
r = item['type']
|
||||
s2 = item['source']
|
||||
c = item['comments']
|
||||
keys = ['id','distance','duration','starttime','rowtype','source','comment']
|
||||
values = [i,d,ttot,s,r,s2,c]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
|
||||
|
||||
return render(request,
|
||||
'c2_list_import2.html',
|
||||
{'workouts':workouts,
|
||||
|
||||
return render(request,
|
||||
'c2_list_import2.html',
|
||||
{'workouts':workouts,
|
||||
'teams':get_my_teams(request.user),
|
||||
})
|
||||
|
||||
@@ -1261,14 +1261,14 @@ def c2listdebug_view(request,page=1,message=""):
|
||||
@login_required()
|
||||
def workout_getc2workout_all(request,page=1,message=""):
|
||||
try:
|
||||
thetoken = c2_open(request.user)
|
||||
thetoken = c2_open(request.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
|
||||
res = c2stuff.get_c2_workout_list(request.user,page=page)
|
||||
|
||||
if (res.status_code != 200):
|
||||
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
|
||||
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
|
||||
messages.error(request,message)
|
||||
else:
|
||||
r = getrower(request.user)
|
||||
@@ -1302,17 +1302,17 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
|
||||
r = getrower(request.user)
|
||||
|
||||
try:
|
||||
thetoken = c2_open(request.user)
|
||||
thetoken = c2_open(request.user)
|
||||
except NoTokenError:
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
return HttpResponseRedirect("/rowers/me/c2authorize/")
|
||||
|
||||
res = c2stuff.get_c2_workout_list(request.user,page=page)
|
||||
|
||||
if (res.status_code != 200):
|
||||
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
|
||||
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
|
||||
messages.error(request,message)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
c2ids = [item['id'] for item in res.json()['data']]
|
||||
@@ -1321,21 +1321,21 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
|
||||
])
|
||||
newids = [c2id for c2id in c2ids if not c2id in knownc2ids]
|
||||
for item in res.json()['data']:
|
||||
d = item['distance']
|
||||
i = item['id']
|
||||
ttot = item['time_formatted']
|
||||
s = item['date']
|
||||
r = item['type']
|
||||
s2 = item['source']
|
||||
c = item['comments']
|
||||
d = item['distance']
|
||||
i = item['id']
|
||||
ttot = item['time_formatted']
|
||||
s = item['date']
|
||||
r = item['type']
|
||||
s2 = item['source']
|
||||
c = item['comments']
|
||||
if i in knownc2ids:
|
||||
nnn = ''
|
||||
else:
|
||||
nnn = 'NEW'
|
||||
keys = ['id','distance','duration','starttime','rowtype','source','comment','new']
|
||||
values = [i,d,ttot,s,r,s2,c,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
keys = ['id','distance','duration','starttime','rowtype','source','comment','new']
|
||||
values = [i,d,ttot,s,r,s2,c,nnn]
|
||||
res = dict(zip(keys,values))
|
||||
workouts.append(res)
|
||||
|
||||
|
||||
breadcrumbs = [
|
||||
@@ -1356,8 +1356,8 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
|
||||
r = getrower(request.user)
|
||||
|
||||
return render(request,
|
||||
'c2_list_import2.html',
|
||||
{'workouts':workouts,
|
||||
'c2_list_import2.html',
|
||||
{'workouts':workouts,
|
||||
'rower':r,
|
||||
'active':'nav-workouts',
|
||||
'breadcrumbs':breadcrumbs,
|
||||
@@ -1449,7 +1449,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
|
||||
'id':encoder.encode_hex(w.id),
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# strokedata not empty - continue
|
||||
id,message = importsources[source].add_workout_from_data(
|
||||
|
||||
Reference in New Issue
Block a user