untested POST version of stroke_data API
This commit is contained in:
@@ -84,6 +84,14 @@ def rdata(file,rower=rrower()):
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def testdata(time,distance,pace,spm):
|
||||||
|
t1 = np.issubdtype(time,np.number)
|
||||||
|
t2 = np.issubdtype(distance,np.number)
|
||||||
|
t3 = np.issubdtype(pace,np.number)
|
||||||
|
t4 = np.issubdtype(spm,np.number)
|
||||||
|
|
||||||
|
return t1 and t2 and t3 and t4
|
||||||
|
|
||||||
def getrowdata_db(id=0):
|
def getrowdata_db(id=0):
|
||||||
data = read_df_sql(id)
|
data = read_df_sql(id)
|
||||||
data['pace'] = data['pace']/1.0e6
|
data['pace'] = data['pace']/1.0e6
|
||||||
|
|||||||
1
rowers/testdata/strokedata.txt
vendored
Normal file
1
rowers/testdata/strokedata.txt
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -330,13 +330,12 @@ class DataTest(TestCase):
|
|||||||
|
|
||||||
form = DocumentsForm(form_data,file_data)
|
form = DocumentsForm(form_data,file_data)
|
||||||
self.assertTrue(form.is_valid())
|
self.assertTrue(form.is_valid())
|
||||||
|
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
u = User.objects.get(username='john')
|
u = User.objects.get(username='john')
|
||||||
r = Rower.objects.get(user=u)
|
r = Rower.objects.get(user=u)
|
||||||
|
|
||||||
|
|
||||||
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
||||||
hrut1=r.ut1,hrat=r.at,
|
hrut1=r.ut1,hrat=r.at,
|
||||||
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ from rowingdata import MysteryParser
|
|||||||
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
from rowingdata import painsledDesktopParser,speedcoachParser,ErgStickParser
|
||||||
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
from rowingdata import SpeedCoach2Parser,FITParser,fitsummarydata
|
||||||
from rowingdata import make_cumvalues
|
from rowingdata import make_cumvalues
|
||||||
from rowingdata import summarydata,get_file_type
|
from rowingdata import summarydata,get_file_type,totimestamp
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
@@ -4456,6 +4456,18 @@ class JSONResponse(HttpResponse):
|
|||||||
kwargs['content_type'] = 'application/json'
|
kwargs['content_type'] = 'application/json'
|
||||||
super(JSONResponse, self).__init__(content, **kwargs)
|
super(JSONResponse, self).__init__(content, **kwargs)
|
||||||
|
|
||||||
|
def trydf(df,aantal,column):
|
||||||
|
try:
|
||||||
|
s = df[column]
|
||||||
|
if len(s) != aantal:
|
||||||
|
return np.zeros(aantal)
|
||||||
|
if not np.issubdtype(s,np.number):
|
||||||
|
return np.zeros(aantal)
|
||||||
|
except KeyError:
|
||||||
|
s = np.zeros(aantal)
|
||||||
|
|
||||||
|
return s
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def strokedatajson(request,id):
|
def strokedatajson(request,id):
|
||||||
try:
|
try:
|
||||||
@@ -4476,9 +4488,77 @@ def strokedatajson(request,id):
|
|||||||
return JSONResponse(datadf)
|
return JSONResponse(datadf)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
checkdata,r = dataprep.getrowdata_db(id=row.id)
|
||||||
|
if not checkdata.empty:
|
||||||
|
return "Not OK"
|
||||||
strokedata = request.POST['strokedata']
|
strokedata = request.POST['strokedata']
|
||||||
# checking/validating and cleaning
|
# checking/validating and cleaning
|
||||||
|
try:
|
||||||
|
strokedata = json.loads(strokedata)
|
||||||
|
except:
|
||||||
|
return HttpResponse("Not OK")
|
||||||
|
|
||||||
|
try:
|
||||||
|
df = pd.DataFrame(strokedata)
|
||||||
|
# time, hr, pace, spm, power, drivelength, distance, drivespeed, dragfactor, strokerecoverytime, averagedriveforce, peakdriveforce, lapidx
|
||||||
|
time = df['time']
|
||||||
|
aantal = len(time)
|
||||||
|
pace = df['pace']
|
||||||
|
if len(pace) != aantal:
|
||||||
|
return "Not OK"
|
||||||
|
distance = df['distance']
|
||||||
|
if len(distance) != aantal:
|
||||||
|
return "Not OK"
|
||||||
|
|
||||||
|
spm = df['spm']
|
||||||
|
if len(spm) != aantal:
|
||||||
|
return "Not OK"
|
||||||
|
|
||||||
|
res = dataprep.testdata(time,distance,pace,spm)
|
||||||
|
if not res:
|
||||||
|
return HttpResponse("Not OK")
|
||||||
|
|
||||||
|
power = trydf(df,aantal,'power')
|
||||||
|
drivelength = trydf(df,aantal,'drivelength')
|
||||||
|
drivespeed = trydf(df,aantal,'drivespeed')
|
||||||
|
dragfactor = trydf(df,aantal,'dragfactor')
|
||||||
|
drivetime = trydf(df,aantal,'drivetime')
|
||||||
|
strokerecoverytime = trydf(df,aantal,'strokerecoverytime')
|
||||||
|
averagedriveforce = trydf(df,aantal,'averagedriveforce')
|
||||||
|
peakdriveforce = trydf(df,aantal,'peakdriveforce')
|
||||||
|
lapidx = trydf(df,aantal,'lapidx')
|
||||||
|
hr = trydf(df,aantal,'hr')
|
||||||
|
|
||||||
|
starttime = totimestamp(row.startdatetime)+time
|
||||||
|
unixtime = starttime+time
|
||||||
|
|
||||||
|
data = DataFrame({'TimeStamp (sec)':unixtime,
|
||||||
|
' Horizontal (meters)': distance,
|
||||||
|
' Cadence (stokes/min)':spm,
|
||||||
|
' HRCur (bpm)':hr,
|
||||||
|
' DragFactor':dragfactor,
|
||||||
|
' Stroke500mPace (sec/500m)':pace,
|
||||||
|
' Power (watts)':power,
|
||||||
|
' DriveLength (meters)':drivelength,
|
||||||
|
' StrokeDistance (meters)':strokedistance,
|
||||||
|
' DriveTime (ms)':drivetime,
|
||||||
|
' StrokeRecoveryTime (ms)':strokerecoverytime,
|
||||||
|
' AverageDriveForce (lbs)':averagedriveforce,
|
||||||
|
' PeakDriveForce (lbs)':peakdriveforce,
|
||||||
|
' lapIdx':lapidx,
|
||||||
|
' ElapsedTime (sec)':time,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
timestr = time.strftime("%Y%m%d-%H%M%S")
|
||||||
|
csvfilename ='media/Import_'+timestr+'.csv'
|
||||||
|
|
||||||
|
res = df.to_csv(csvfilename,index_label='index')
|
||||||
|
row.csvfilename = csvfilename
|
||||||
|
row.save()
|
||||||
|
|
||||||
|
except:
|
||||||
|
return HttpResponse("Not OK")
|
||||||
# mangling
|
# mangling
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user