UA done
This commit is contained in:
@@ -28,7 +28,7 @@ from django.contrib.auth.decorators import login_required
|
|||||||
# from .models import Profile
|
# from .models import Profile
|
||||||
from rowingdata import rowingdata
|
from rowingdata import rowingdata
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from rowers.models import Rower,Workout
|
from rowers.models import Rower,Workout,checkworkoutuser
|
||||||
|
|
||||||
from rowsandall_app.settings import (
|
from rowsandall_app.settings import (
|
||||||
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
|
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
|
||||||
@@ -88,6 +88,20 @@ def custom_exception_handler(exc,message):
|
|||||||
|
|
||||||
return res
|
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
|
# Refresh ST token using refresh token
|
||||||
def do_refresh_token(refreshtoken,access_token):
|
def do_refresh_token(refreshtoken,access_token):
|
||||||
client_auth = requests.auth.HTTPBasicAuth(UNDERARMOUR_CLIENT_KEY, UNDERARMOUR_CLIENT_SECRET)
|
client_auth = requests.auth.HTTPBasicAuth(UNDERARMOUR_CLIENT_KEY, UNDERARMOUR_CLIENT_SECRET)
|
||||||
@@ -385,3 +399,55 @@ def get_userid(access_token):
|
|||||||
res = 0
|
res = 0
|
||||||
|
|
||||||
return res
|
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
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ import stravastuff
|
|||||||
from stravastuff import StravaNoTokenError
|
from stravastuff import StravaNoTokenError
|
||||||
import sporttracksstuff
|
import sporttracksstuff
|
||||||
import underarmourstuff
|
import underarmourstuff
|
||||||
|
from underarmourstuff import UnderArmourNoTokenError,underarmour_open
|
||||||
import tpstuff
|
import tpstuff
|
||||||
import runkeeperstuff
|
import runkeeperstuff
|
||||||
import ownapistuff
|
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
|
# Checks if user has UnderArmour token, renews them if they are expired
|
||||||
def tp_open(user):
|
def tp_open(user):
|
||||||
@@ -1441,7 +1429,7 @@ def workout_underarmour_upload_view(request,id=0):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
thetoken = underarmour_open(r.user)
|
thetoken = underarmour_open(r.user)
|
||||||
except UnderarmourNoTokenError:
|
except UnderArmourNoTokenError:
|
||||||
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
return HttpResponseRedirect("/rowers/me/underarmourauthorize/")
|
||||||
|
|
||||||
# ready to upload. Hurray
|
# ready to upload. Hurray
|
||||||
@@ -5896,6 +5884,14 @@ def workout_upload_view(request,message="",
|
|||||||
except RunKeeperNoTokenError:
|
except RunKeeperNoTokenError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
if (upload_to_ua):
|
||||||
|
try:
|
||||||
|
uamessage,uaid = underarmourstuff.workout_ua_upload(
|
||||||
|
request.user,w
|
||||||
|
)
|
||||||
|
except UnderArmourNoTokenError:
|
||||||
|
pass
|
||||||
|
|
||||||
if message:
|
if message:
|
||||||
url = reverse(workout_edit_view,
|
url = reverse(workout_edit_view,
|
||||||
kwargs={
|
kwargs={
|
||||||
|
|||||||
1
rowsandall_app/.#settings.py
Normal file
1
rowsandall_app/.#settings.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
E408191@CZ27LT9RCGN72.33704:1494265730
|
||||||
@@ -241,7 +241,8 @@ RUNKEEPER_REDIRECT_URI = CFG['runkeeper_callback']
|
|||||||
UNDERARMOUR_CLIENT_ID = CFG['underarmour_client_name']
|
UNDERARMOUR_CLIENT_ID = CFG['underarmour_client_name']
|
||||||
UNDERARMOUR_CLIENT_SECRET = CFG['underarmour_client_secret']
|
UNDERARMOUR_CLIENT_SECRET = CFG['underarmour_client_secret']
|
||||||
UNDERARMOUR_CLIENT_KEY = CFG['underarmour_client_key']
|
UNDERARMOUR_CLIENT_KEY = CFG['underarmour_client_key']
|
||||||
UNDERARMOUR_REDIRECT_URI = "http://rowsandall.com/underarmour_callback"
|
UNDERARMOUR_REDIRECT_URI = CFG['underarmour_callback']
|
||||||
|
#UNDERARMOUR_REDIRECT_URI = "http://rowsandall.com/underarmour_callback"
|
||||||
#UNDERARMOUR_REDIRECT_URI = "http://localhost:8000/underarmour_callback"
|
#UNDERARMOUR_REDIRECT_URI = "http://localhost:8000/underarmour_callback"
|
||||||
|
|
||||||
# TrainingPeaks
|
# TrainingPeaks
|
||||||
|
|||||||
Reference in New Issue
Block a user