Private
Public Access
1
0

small refactor step 1

This commit is contained in:
Sander Roosendaal
2021-04-07 08:35:03 +02:00
parent f1709284b6
commit c0b4b517ed
10 changed files with 312 additions and 246 deletions

View File

@@ -22,7 +22,7 @@ queuehigh = django_rq.get_queue('low')
from rowers.rower_rules import is_workout_user, ispromember
from iso8601 import ParseError
from rowers.utils import myqueue,get_nk_summary, get_nk_allstats, get_nk_intervalstats,getdict
from rowers.utils import myqueue
import rowers.mytypes as mytypes
import gzip
@@ -42,6 +42,7 @@ except ImportError:
JSONDecodeError = ValueError
from rowers.imports import *
from rowers.nkimportutils import *
oauth_data = {
'client_id': NK_CLIENT_ID,
@@ -209,7 +210,7 @@ def rower_nk_token_refresh(user):
def make_authorization_url(request):
return imports_make_authorization_url(oauth_data)
def get_nk_workout_list(user,fake=False):
def get_nk_workout_list(user,fake=False,startTime=0,endTime=0):
r = Rower.objects.get(user=user)
if (r.nktoken == '') or (r.nktoken is None):
@@ -220,10 +221,12 @@ def get_nk_workout_list(user,fake=False):
return custom_exception_handler(401,s)
else:
# ready to fetch. Hurray
endTime = int(arrow.now().timestamp())*1000
endTime = str(endTime)
startTime = arrow.now()-timedelta(days=30)*1000
startTime = str(int(startTime.timestamp()))
if not endTime:
endTime = int(arrow.now().timestamp())*1000
endTime = str(endTime)
if not startTime:
startTime = arrow.now()-timedelta(days=30)
startTime = str(int(startTime.timestamp())*1000)
authorizationstring = str('Bearer ' + r.nktoken)
headers = {'Authorization': authorizationstring,
'user-agent': 'sanderroosendaal',
@@ -244,81 +247,6 @@ def get_nk_workout_list(user,fake=False):
#
def add_workout_from_data(user,nkid,data,strokedata,source='nk',splitdata=None,
workoutsource='nklinklogbook'):
csvfilename = 'media/{code}_{nkid}.csv.gz'.format(
nkid=nkid,
code = uuid4().hex[:16]
)
strokedata.to_csv(csvfilename, index_label='index', compression='gzip')
userid = user.id
title = data["name"]
speedInput = data["speedInput"]
elapsedTime = data["elapsedTime"]
totalDistanceGps = data["totalDistanceGps"]
totalDistanceImp = data["totalDistanceImp"]
intervals = data["intervals"] # add intervals
oarlockSessions = data["oarlockSessions"]
deviceId = data["deviceId"] # you could get the firmware version
summary = get_nk_allstats(data,strokedata)
# oarlock inboard, length, boat name
if oarlockSessions:
oarlocksession = oarlockSessions[0] # should take seatIndex
boatName = oarlocksession["boatName"]
oarLength = oarlocksession["oarLength"] # cm
oarInboardLength = oarlocksession["oarInboardLength"] # cm
seatNumber = oarlocksession["seatNumber"]
else:
boatName = ''
oarLength = 289
oarInboardLength = 88
seatNumber = 1
workouttype = "water"
boattype = "1x"
uploadoptions = {
'secret': UPLOAD_SERVICE_SECRET,
'user':userid,
'file': csvfilename,
'title': title,
'workouttype': workouttype,
'boattype': boattype,
'nkid':nkid,
'inboard': oarInboardLength/100.,
'oarlength': oarLength/100.,
'summary':summary,
}
session = requests.session()
newHeaders = {'Content-type': 'application/json', 'Accept': 'text/plain'}
session.headers.update(newHeaders)
response = session.post(UPLOAD_SERVICE_URL,json=uploadoptions)
if response.status_code != 200:
return 0,response.text
try:
workoutid = response.json()['id']
except KeyError:
workoutid = 1
# evt update workout summary
# return
return workoutid,""
def get_workout(user,nkid):
r = Rower.objects.get(user=user)
if (r.nktoken == '') or (r.nktoken is None):
@@ -338,8 +266,6 @@ def get_workout(user,nkid):
'Content-Type': 'application/json',
}
# get strokes
url = NK_API_LOCATION+"api/v1/sessions/strokes"
response = requests.get(url,headers=headers,params=params)
@@ -353,22 +279,7 @@ def get_workout(user,nkid):
strokeData = jsonData[str(nkid)]
df = pd.DataFrame.from_dict(strokeData)
oarlockData = df['oarlockStrokes']
oarlockData = oarlockData.apply(lambda x:getdict(x, seatIndex=1))
df2 = pd.DataFrame.from_records(oarlockData.values)
df.set_index('timestamp')
if not df2.empty:
df2.set_index('timestamp')
df = df.merge(df2,left_index=True,right_index=True)
df = df.rename(columns={"timestamp_x":"timestamp"})
df = df.drop('oarlockStrokes',axis=1)
df.sort_values(by='timestamp',ascending=True,inplace=True)
df.fillna(inplace=True,method='ffill')
df = strokeDataToDf(strokeData)
# get workout data
timestampbegin = df['timestamp'].min()
@@ -379,6 +290,7 @@ def get_workout(user,nkid):
'startTime':timestampbegin-1,
'endTime': timestampend+1,
}
response = requests.get(url, headers=headers,params=params)
if response.status_code != 200: