Private
Public Access
1
0
This commit is contained in:
Sander Roosendaal
2017-05-09 11:20:10 +02:00
parent cba92b8619
commit 7e573d9bdf
4 changed files with 80 additions and 16 deletions

View File

@@ -28,7 +28,7 @@ from django.contrib.auth.decorators import login_required
# from .models import Profile
from rowingdata import rowingdata
import pandas as pd
from rowers.models import Rower,Workout
from rowers.models import Rower,Workout,checkworkoutuser
from rowsandall_app.settings import (
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
@@ -88,6 +88,20 @@ def custom_exception_handler(exc,message):
return res
# Checks if user has UnderArmour token, renews them if they are expired
def underarmour_open(user):
r = Rower.objects.get(user=user)
if (r.underarmourtoken == '') or (r.underarmourtoken is None):
s = "Token doesn't exist. Need to authorize"
raise UnderArmourNoTokenError("User has no token")
else:
if (timezone.now()>r.underarmourtokenexpirydate):
thetoken = underarmourstuff.rower_underarmour_token_refresh(user)
else:
thetoken = r.underarmourtoken
return thetoken
# Refresh ST token using refresh token
def do_refresh_token(refreshtoken,access_token):
client_auth = requests.auth.HTTPBasicAuth(UNDERARMOUR_CLIENT_KEY, UNDERARMOUR_CLIENT_SECRET)
@@ -385,3 +399,55 @@ def get_userid(access_token):
res = 0
return res
def workout_ua_upload(user,w):
message = ""
uaid = 0
r = w.user
thetoken = underarmour_open(r.user)
# ready to upload. Hurray
if (checkworkoutuser(user,w)):
data = createunderarmourworkoutdata(w)
# return HttpResponse(json.dumps(data))
if not data:
message = "Data error"
uaid = 0
return message, uaid
authorizationstring = str('Bearer ' + thetoken)
headers = {'Authorization': authorizationstring,
'Api-Key': UNDERARMOUR_CLIENT_KEY,
'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))
# check for duplicate error first
if (response.status_code == 409 ):
message = "Duplicate error"
w.uploadedtounderarmour = -1
uaid = -1
w.save()
elif (response.status_code == 201 or response.status_code==200):
uaid = getidfromresponse(response)
w.uploadedtounderarmour = uaid
w.save()
return '',uaid
else:
s = response
message = "Something went wrong in workout_underarmour_upload_view: %s - %s" % (s.reason,s.text)
uaid = 0
return message, uaid
else:
message = "You are not authorized to upload this workout"
uaid = 0
return message, uaid
return message, uaid

View File

@@ -60,6 +60,7 @@ import stravastuff
from stravastuff import StravaNoTokenError
import sporttracksstuff
import underarmourstuff
from underarmourstuff import UnderArmourNoTokenError,underarmour_open
import tpstuff
import runkeeperstuff
import ownapistuff
@@ -1035,19 +1036,6 @@ def add_workout_from_underarmourdata(user,importid,data):
# Checks if user has UnderArmour token, renews them if they are expired
def underarmour_open(user):
r = Rower.objects.get(user=user)
if (r.underarmourtoken == '') or (r.underarmourtoken is None):
s = "Token doesn't exist. Need to authorize"
raise UnderarmourNoTokenError("User has no token")
else:
if (timezone.now()>r.underarmourtokenexpirydate):
thetoken = underarmourstuff.rower_underarmour_token_refresh(user)
else:
thetoken = r.underarmourtoken
return thetoken
# Checks if user has UnderArmour token, renews them if they are expired
def tp_open(user):
@@ -1441,7 +1429,7 @@ def workout_underarmour_upload_view(request,id=0):
try:
thetoken = underarmour_open(r.user)
except UnderarmourNoTokenError:
except UnderArmourNoTokenError:
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
# ready to upload. Hurray
@@ -5895,6 +5883,14 @@ def workout_upload_view(request,message="",
)
except RunKeeperNoTokenError:
pass
if (upload_to_ua):
try:
uamessage,uaid = underarmourstuff.workout_ua_upload(
request.user,w
)
except UnderArmourNoTokenError:
pass
if message:
url = reverse(workout_edit_view,