Private
Public Access
1
0

impeller stuff working, need beta testers

This commit is contained in:
Sander Roosendaal
2021-04-07 11:36:38 +02:00
parent 13af1d3d71
commit 9469fe6200
6 changed files with 75 additions and 9 deletions

View File

@@ -1853,8 +1853,15 @@ parsers = {
'nklinklogbook': NKLiNKLogbookParser, 'nklinklogbook': NKLiNKLogbookParser,
} }
def parsenonpainsled(fileformat,f2,summary,startdatetime=''): def parsenonpainsled(fileformat,f2,summary,startdatetime='',empowerfirmware=None,inboard=None,oarlength=None):
try: try:
if fileformat == 'nklinklogbook' and empowerfirmware is not None:
if inboard is not None and oarlength is not None:
row = NKLiNKLogbookParser(f2,firmware=empowerfirmware,inboard=inboard,oarlength=oarlength)
print(row,'aap')
else:
row = NKLiNKLogbookParser(f2)
else:
row = parsers[fileformat](f2) row = parsers[fileformat](f2)
if startdatetime != '': if startdatetime != '':
row.rowdatetime = arrow.get(startdatetime).datetime row.rowdatetime = arrow.get(startdatetime).datetime
@@ -1875,6 +1882,8 @@ def parsenonpainsled(fileformat,f2,summary,startdatetime=''):
summary = row.allstats() summary = row.allstats()
except ZeroDivisionError: except ZeroDivisionError:
summary = '' summary = ''
else:
fileformat = fileformat+'v'+str(empowerfirmware)
# handle FIT # handle FIT
if (fileformat == 'fit'): if (fileformat == 'fit'):
@@ -1889,13 +1898,14 @@ def parsenonpainsled(fileformat,f2,summary,startdatetime=''):
return row,hasrecognized,summary,fileformat return row,hasrecognized,summary,fileformat
def handle_nonpainsled(f2, fileformat, summary='',startdatetime=''): def handle_nonpainsled(f2, fileformat, summary='',startdatetime='',empowerfirmware=None):
oarlength = 2.89 oarlength = 2.89
inboard = 0.88 inboard = 0.88
hasrecognized = False hasrecognized = False
impeller = False impeller = False
row,hasrecognized,summary,fileformat = parsenonpainsled(fileformat,f2,summary,startdatetime=startdatetime) row,hasrecognized,summary,fileformat = parsenonpainsled(fileformat,f2,summary,startdatetime=startdatetime,
empowerfirmware=empowerfirmware)
# Handle c2log # Handle c2log
if (fileformat == 'c2log' or fileformat == 'rowprolog'): if (fileformat == 'c2log' or fileformat == 'rowprolog'):
@@ -1909,7 +1919,7 @@ def handle_nonpainsled(f2, fileformat, summary='',startdatetime=''):
f2 = f2[:-4] + 'o.csv' f2 = f2[:-4] + 'o.csv'
row2 = rrdata(df = row.df) row2 = rrdata(df = row.df)
if 'speedcoach2' in fileformat: if 'speedcoach2' in fileformat or 'nklinklogbook' in fileformat:
# impeller consistency # impeller consistency
impellerdata, consistent, ratio = row.impellerconsistent(threshold=0.3) impellerdata, consistent, ratio = row.impellerconsistent(threshold=0.3)
if impellerdata and consistent: if impellerdata and consistent:
@@ -1990,6 +2000,9 @@ def new_workout_from_file(r, f2,
makeprivate=False, makeprivate=False,
startdatetime='', startdatetime='',
notes='', notes='',
oarlockfirmware='',
inboard=None,
oarlength=None,
uploadoptions={'boattype':'1x','workouttype':'rower'}): uploadoptions={'boattype':'1x','workouttype':'rower'}):
message = "" message = ""
impeller = False impeller = False
@@ -2095,7 +2108,8 @@ def new_workout_from_file(r, f2,
f2, f2,
fileformat, fileformat,
startdatetime=startdatetime, startdatetime=startdatetime,
summary=summary summary=summary,
empowerfirmware=oarlockfirmware,
) )
if not f2: if not f2:
message = 'Something went wrong' message = 'Something went wrong'

View File

@@ -33,6 +33,11 @@ def add_workout_from_data(userid,nkid,data,strokedata,source='nk',splitdata=None
code = uuid4().hex[:16] code = uuid4().hex[:16]
) )
try:
userid=int(userid)
except TypeError:
userid = userid.id
strokedata.to_csv(csvfilename, index_label='index', compression='gzip') strokedata.to_csv(csvfilename, index_label='index', compression='gzip')
title = data["name"] title = data["name"]
@@ -44,6 +49,7 @@ def add_workout_from_data(userid,nkid,data,strokedata,source='nk',splitdata=None
oarlockSessions = data["oarlockSessions"] oarlockSessions = data["oarlockSessions"]
deviceId = data["deviceId"] # you could get the firmware version deviceId = data["deviceId"] # you could get the firmware version
summary = get_nk_allstats(data,strokedata) summary = get_nk_allstats(data,strokedata)
speedInput = data['speedInput'] # 0 = GPS; 1 = Impeller speedInput = data['speedInput'] # 0 = GPS; 1 = Impeller
@@ -55,11 +61,16 @@ def add_workout_from_data(userid,nkid,data,strokedata,source='nk',splitdata=None
oarLength = oarlocksession["oarLength"] # cm oarLength = oarlocksession["oarLength"] # cm
oarInboardLength = oarlocksession["oarInboardLength"] # cm oarInboardLength = oarlocksession["oarInboardLength"] # cm
seatNumber = oarlocksession["seatNumber"] seatNumber = oarlocksession["seatNumber"]
try:
oarlockfirmware = oarlocksession["firmwareVersion"]
except KeyError:
oarlockfirmware = ''
else: else:
boatName = '' boatName = ''
oarLength = 289 oarLength = 289
oarInboardLength = 88 oarInboardLength = 88
seatNumber = 1 seatNumber = 1
oarlockfirmware = ''
workouttype = "water" workouttype = "water"
boattype = "1x" boattype = "1x"
@@ -75,6 +86,7 @@ def add_workout_from_data(userid,nkid,data,strokedata,source='nk',splitdata=None
'inboard': oarInboardLength/100., 'inboard': oarInboardLength/100.,
'oarlength': oarLength/100., 'oarlength': oarLength/100.,
'summary':summary, 'summary':summary,
'oarlockfirmware':oarlockfirmware,
} }
session = requests.session() session = requests.session()

View File

@@ -111,7 +111,10 @@ def safetimedelta(x):
siteurl = SITE_URL siteurl = SITE_URL
from rowers.nkimportutils import get_nk_summary, get_nk_allstats, get_nk_intervalstats,getdict,strokeDataToDf from rowers.nkimportutils import (
get_nk_summary, get_nk_allstats, get_nk_intervalstats,getdict,strokeDataToDf,
add_workout_from_data
)
# testing task # testing task

View File

@@ -476,6 +476,10 @@ class NKObjects(DjangoTestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
w = Workout.objects.get(id=1)
#self.assertEqual(w.inboard,0.89)
#self.assertEqual(w.oarlength,2.87)
@patch('rowers.nkstuff.requests.get', side_effect=mocked_requests) @patch('rowers.nkstuff.requests.get', side_effect=mocked_requests)
@patch('rowers.nkstuff.requests.post', side_effect=mocked_requests) @patch('rowers.nkstuff.requests.post', side_effect=mocked_requests)
@patch('rowers.nkimportutils.requests.session', side_effect=mocked_session) @patch('rowers.nkimportutils.requests.session', side_effect=mocked_session)
@@ -498,6 +502,9 @@ class NKObjects(DjangoTestCase):
expected_url='/rowers/workout/'+encoded1+'/edit/', expected_url='/rowers/workout/'+encoded1+'/edit/',
status_code=302,target_status_code=200) status_code=302,target_status_code=200)
w = Workout.objects.get(id=1)
#self.assertTrue(w.impeller)
#@pytest.mark.django_db #@pytest.mark.django_db
@override_settings(TESTING=True) @override_settings(TESTING=True)

View File

@@ -548,6 +548,19 @@ def do_sync(w,options, quick=False):
except KeyError: except KeyError:
pass pass
try:
if options['inboard'] != 0 and options['inboard'] != '':
w.inboard = options['inboard']
except KeyError:
pass
try:
if options['oarlength'] != 0 and options['oarlength'] != '':
w.oarlength = options['oarlength']
except KeyError:
pass
try: try:
if options['garminid'] != 0 and options['garminid'] != '': if options['garminid'] != 0 and options['garminid'] != '':
w.uploadedtogarmin = options['garminid'] w.uploadedtogarmin = options['garminid']

View File

@@ -4859,8 +4859,6 @@ def workout_upload_api(request):
message = {'status':'false','message':'this view cannot be accessed through GET'} message = {'status':'false','message':'this view cannot be accessed through GET'}
return JSONResponse(status=403,data=message) return JSONResponse(status=403,data=message)
# test if JSON # test if JSON
try: try:
json_data = json.loads(request.body) json_data = json.loads(request.body)
@@ -4939,6 +4937,22 @@ def workout_upload_api(request):
except KeyError: except KeyError:
startdatetime = '' startdatetime = ''
try:
oarlockfirmware = post_data['oarlockfirmware']
except:
oarlockfirmware = None
try:
inboard = post_data['inboard']
except:
inboard = None
try:
oarlength = post_data['oarlength']
except:
oarlength = None
r = None r = None
if form.is_valid(): if form.is_valid():
t = form.cleaned_data['title'] t = form.cleaned_data['title']
@@ -5011,6 +5025,9 @@ def workout_upload_api(request):
notes=notes, notes=notes,
uploadoptions=post_data, uploadoptions=post_data,
startdatetime=startdatetime, startdatetime=startdatetime,
oarlockfirmware=oarlockfirmware,
inboard=inboard,
oarlength=oarlength,
) )
if id == 0: if id == 0: