Private
Public Access
1
0

Merge branch 'release/v18.2.11'

This commit is contained in:
Sander Roosendaal
2022-01-21 18:04:58 +01:00
2 changed files with 52 additions and 18 deletions

View File

@@ -23,7 +23,6 @@ import os,sys
import gzip
import base64
import yaml
from uuid import uuid4
from requests import ConnectionError
from json.decoder import JSONDecodeError
@@ -37,6 +36,7 @@ from django.contrib.auth.decorators import login_required
from django.urls import reverse, reverse_lazy
from rowers.utils import myqueue
from rowers.opaque import encoder
import django_rq
queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
@@ -76,7 +76,7 @@ def get_token(code):
post_data = {"grant_type": "authorization_code",
"code": code,
"redirect_uri": POLAR_REDIRECT_URI,
#"redirect_uri": POLAR_REDIRECT_URI,
}
auth_string = '{id}:{secret}'.format(
@@ -90,6 +90,10 @@ def get_token(code):
headers = { 'Authorization': 'Basic %s' % base64.b64encode(
bytes(auth_string,'utf-8')).decode('utf-8') }
dologging('polar.log','Getting token')
dologging('polar.log',post_data)
dologging('polar.log',auth_string)
response = requests.post("https://polarremote.com/v2/oauth2/token",
data=post_data,
headers=headers)
@@ -97,6 +101,7 @@ def get_token(code):
if response.status_code != 200: # pragma: no cover
dologging('polar.log','Getting token, got:')
dologging('polar.log',response.status_code)
dologging('polar.log',response.reason)
dologging('polar.log',response.text)
try:
@@ -356,27 +361,41 @@ def register_user(user, token):
s = "Token expired. Needs to refresh"
return custom_exception_handler(401,s)
authorizationstring = str('Bearer ' + token)
authorizationstring = 'Bearer {token}'.format(token=token)
headers = {
'Content-Type': 'application/xml',
'Authorization':authorizationstring,
'Accept': 'application/json'
}
params = {
'member-id': uuid4().hex
payload = {
"member-id": encoder.encode_hex(user.id)
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {token}'.format(token=token)
}
url = baseurl+'/users'
dologging('polar.log','Registering user')
response = requests.post(url,params=params,headers=headers)
if response.status_code != 200:
dologging('polar.log',url)
response = requests.post(
'https://www.polaraccesslink.com/v3/users',
json = payload,
headers = headers
)
#url = baseurl+'/users'
#response = requests.post(url,params=params,headers=headers)
if response.status_code not in [200,201]:
#dologging('polar.log',url)
dologging('polar.log',headers)
dologging('polar.log',params)
dologging('polar.log',payload)
dologging('polar.log',response.status_code)
dologging('polar.log',response.content)
try:
dologging('polar.log',response.reason)
dologging('polar.log',response.text)

View File

@@ -206,7 +206,7 @@ def rower_polar_authorize(request): # pragma: no cover
params = {"client_id": POLAR_CLIENT_ID,
"response_type": "code",
"redirect_uri": POLAR_REDIRECT_URI,
#"redirect_uri": POLAR_REDIRECT_URI,
"state": state,
# "scope":"accesslink.read_all"
}
@@ -420,6 +420,7 @@ def rower_process_polarcallback(request):
try:
code = request.GET['code']
dologging('polar.log',code)
except MultiValueDictKeyError: # pragma: no cover
try:
message = request.GET['error']
@@ -432,7 +433,21 @@ def rower_process_polarcallback(request):
return HttpResponseRedirect(url)
access_token, expires_in, user_id = polarstuff.get_token(code)
polar_user_data = polarstuff.register_user(request.user, access_token)
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_id:
polar_user_data = polarstuff.register_user(request.user, access_token)
else:
messages.error(request,'Polar Flow Authorization Failed')
url = reverse('rower_exportsettings_view')
return HttpResponseRedirect(url)
try:
user_id2 = polar_user_data['polar-user-id']
@@ -442,14 +457,14 @@ def rower_process_polarcallback(request):
if user_id2 != user_id:
messages.error(request,'Polar User ID error')
expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
#expirydatetime = timezone.now()+datetime.timedelta(seconds=expires_in)
r = getrower(request.user)
r.polartoken = access_token
r.polartokenexpirydate = expirydatetime
r.polaruserid = user_id
#r = getrower(request.user)
#r.polartoken = access_token
#r.polartokenexpirydate = expirydatetime
#r.polaruserid = user_id
r.save()
#r.save()
if user_id2 == user_id:
successmessage = "Tokens stored. Good to go. Please check your import/export settings"