polar passing tests
This commit is contained in:
@@ -76,21 +76,8 @@ def rower_garmin_authorize(request): # pragma: no cover
|
||||
# Polar Authorization
|
||||
@login_required()
|
||||
def rower_polar_authorize(request): # pragma: no cover
|
||||
|
||||
state = str(uuid4())
|
||||
|
||||
params = {"client_id": POLAR_CLIENT_ID,
|
||||
"response_type": "code",
|
||||
# "redirect_uri": POLAR_REDIRECT_URI,
|
||||
"state": state,
|
||||
# "scope":"accesslink.read_all"
|
||||
}
|
||||
url = "https://flow.polar.com/oauth2/authorization?" + \
|
||||
urllib.parse.urlencode(params)
|
||||
dologging('polar.log', 'Authorizing')
|
||||
dologging('polar.log', url)
|
||||
dologging('polar.log', params)
|
||||
|
||||
integration = importsources['polar'](request.user)
|
||||
url = integration.make_authorization_url()
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@login_required()
|
||||
@@ -166,8 +153,9 @@ def rower_process_twittercallback(request): # pragma: no cover
|
||||
|
||||
@login_required()
|
||||
def rower_process_polarcallback(request):
|
||||
|
||||
integration = importsources['polar'](request.user)
|
||||
error = request.GET.get('error', 'no error')
|
||||
|
||||
dologging('polar.log', 'Callback: {error}'.format(error=error))
|
||||
if error != 'no error': # pragma: no cover
|
||||
messages.error(request, error)
|
||||
@@ -188,7 +176,7 @@ def rower_process_polarcallback(request):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
access_token, expires_in, user_id = polarstuff.get_token(code)
|
||||
access_token, expires_in, user_id = integration.get_token(code)
|
||||
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
|
||||
r = getrower(request.user)
|
||||
r.polartoken = access_token
|
||||
@@ -198,12 +186,28 @@ def rower_process_polarcallback(request):
|
||||
r.save()
|
||||
|
||||
if user_id:
|
||||
polar_user_data = polarstuff.register_user(request.user, access_token)
|
||||
polar_user_data = integration.register_user(access_token)
|
||||
else: # pragma: no cover
|
||||
messages.error(request, 'Polar Flow Authorization Failed')
|
||||
url = reverse('rower_exportsettings_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
try:
|
||||
error = polar_user_data['error']
|
||||
if error['error_type'] == 'user_already_registered':
|
||||
s = error['message']
|
||||
tester = re.compile(r'.*userid:(?P<id>\d+)')
|
||||
testresult = tester.match(s)
|
||||
if testresult:
|
||||
user_id2 = testresult.group('id')
|
||||
if user_id2 == str(user_id):
|
||||
messages.info(request,
|
||||
"Tokens stored. Good to go. Please check your import/export settings")
|
||||
url = reverse('rower_exportsettings_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
except KeyError:
|
||||
pass
|
||||
try:
|
||||
user_id2 = polar_user_data['polar-user-id']
|
||||
except KeyError: # pragma: no cover
|
||||
@@ -942,64 +946,6 @@ def garmin_details_view(request):
|
||||
return HttpResponse(status=200)
|
||||
|
||||
|
||||
# the page where you select which Polar workout to Import
|
||||
@login_required()
|
||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
||||
def workout_polarimport_view(request, userid=0): # pragma: no cover
|
||||
exercises = polarstuff.get_polar_workouts(request.user)
|
||||
workouts = []
|
||||
|
||||
try:
|
||||
a = exercises.status_code
|
||||
if a == 401:
|
||||
messages.error(
|
||||
request, 'Not authorized. You need to connect to Polar first')
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
except: # pragma: no cover
|
||||
exercises = []
|
||||
pass
|
||||
|
||||
for exercise in exercises:
|
||||
try:
|
||||
d = exercise['distance']
|
||||
except KeyError:
|
||||
d = 0
|
||||
|
||||
i = exercise['id']
|
||||
transactionid = exercise['transaction-id']
|
||||
starttime = exercise['start-time']
|
||||
rowtype = exercise['sport']
|
||||
durationstring = exercise['duration']
|
||||
duration = isodate.parse_duration(durationstring)
|
||||
keys = ['id', 'distance', 'duration',
|
||||
'starttime', 'type', 'transactionid']
|
||||
values = [i, d, duration, starttime, rowtype, transactionid]
|
||||
res = dict(zip(keys, values))
|
||||
workouts.append(res)
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
'url': '/rowers/list-workouts/',
|
||||
'name': 'Workouts'
|
||||
},
|
||||
{
|
||||
'url': reverse('workout_polarimport_view'),
|
||||
'name': 'Polar'
|
||||
},
|
||||
]
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
return render(request, 'polar_list_import.html',
|
||||
{
|
||||
'workouts': workouts,
|
||||
'active': 'nav-workouts',
|
||||
'rower': r,
|
||||
'breadcrumbs': breadcrumbs,
|
||||
'teams': get_my_teams(request.user),
|
||||
})
|
||||
|
||||
importauthorizeviews = {
|
||||
'c2': 'rower_integration_authorize',
|
||||
|
||||
@@ -200,7 +200,6 @@ import rowers.rojabo_stuff as rojabo_stuff
|
||||
import rowers.garmin_stuff as garmin_stuff
|
||||
|
||||
from rowers.rojabo_stuff import rojabo_open
|
||||
import rowers.polarstuff as polarstuff
|
||||
|
||||
from rowers.integrations import *
|
||||
|
||||
|
||||
Reference in New Issue
Block a user