Merge branch 'feature/nkoauth' into develop
This commit is contained in:
@@ -1586,9 +1586,9 @@ def rdata(file, rower=rrower()):
|
|||||||
try:
|
try:
|
||||||
res = rrdata(csvfile=file + '.gz', rower=rower)
|
res = rrdata(csvfile=file + '.gz', rower=rower)
|
||||||
except IOError, IndexError:
|
except IOError, IndexError:
|
||||||
res = 0
|
res = rrdata()
|
||||||
except:
|
except:
|
||||||
res = 0
|
res = rrdata()
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@@ -1637,7 +1637,7 @@ def getrowdata_db(id=0, doclean=False, convertnewtons=True):
|
|||||||
|
|
||||||
if data.empty:
|
if data.empty:
|
||||||
rowdata, row = getrowdata(id=id)
|
rowdata, row = getrowdata(id=id)
|
||||||
if rowdata:
|
if not rowdata.empty:
|
||||||
data = dataprep(rowdata.df, id=id, bands=True,
|
data = dataprep(rowdata.df, id=id, bands=True,
|
||||||
barchart=True, otwpower=True)
|
barchart=True, otwpower=True)
|
||||||
else:
|
else:
|
||||||
@@ -1645,7 +1645,8 @@ def getrowdata_db(id=0, doclean=False, convertnewtons=True):
|
|||||||
else:
|
else:
|
||||||
row = Workout.objects.get(id=id)
|
row = Workout.objects.get(id=id)
|
||||||
|
|
||||||
if data['efficiency'].mean() == 0 and data['power'].mean() != 0:
|
|
||||||
|
if not data.empty and data['efficiency'].mean() == 0 and data['power'].mean() != 0:
|
||||||
data = add_efficiency(id=id)
|
data = add_efficiency(id=id)
|
||||||
|
|
||||||
if doclean:
|
if doclean:
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ class RowerSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
'tr',
|
'tr',
|
||||||
'an',
|
'an',
|
||||||
'ftp',
|
'ftp',
|
||||||
|
'sex',
|
||||||
)
|
)
|
||||||
|
|
||||||
class FavoriteChartSerializer(serializers.ModelSerializer):
|
class FavoriteChartSerializer(serializers.ModelSerializer):
|
||||||
@@ -52,6 +53,13 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
|||||||
'maxhr',
|
'maxhr',
|
||||||
'notes',
|
'notes',
|
||||||
'summary',
|
'summary',
|
||||||
|
'boattype',
|
||||||
|
'timezone',
|
||||||
|
'forceunit',
|
||||||
|
'inboard',
|
||||||
|
'oarlength',
|
||||||
|
'privacy',
|
||||||
|
'rankingpiece'
|
||||||
)
|
)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
@@ -78,7 +86,13 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
|||||||
summary=validated_data['summary'],
|
summary=validated_data['summary'],
|
||||||
averagehr=validated_data['averagehr'],
|
averagehr=validated_data['averagehr'],
|
||||||
maxhr=validated_data['maxhr'],
|
maxhr=validated_data['maxhr'],
|
||||||
startdatetime=rowdatetime)
|
startdatetime=rowdatetime,
|
||||||
|
timezone=validated_data['timezone'],
|
||||||
|
forceunit=validated_data['forceunit'],
|
||||||
|
inboard=validated_data['inboard'],
|
||||||
|
oarlength=validated_data['oarlength'],
|
||||||
|
privacy=validated_data['privacy'],
|
||||||
|
rankingpiece=validated_data['rankingpiece'],)
|
||||||
w.save()
|
w.save()
|
||||||
return w
|
return w
|
||||||
|
|
||||||
@@ -104,6 +118,13 @@ class WorkoutSerializer(serializers.ModelSerializer):
|
|||||||
instance.averagehr=validated_data['averagehr']
|
instance.averagehr=validated_data['averagehr']
|
||||||
instance.maxhr=validated_data['maxhr']
|
instance.maxhr=validated_data['maxhr']
|
||||||
instance.startdatetime=rowdatetime
|
instance.startdatetime=rowdatetime
|
||||||
|
instance.timezone=validated_data['timezone']
|
||||||
|
instance.forceunit=validated_data['forceunit']
|
||||||
|
instance.inboard=validated_data['inboard']
|
||||||
|
instance.oarlength=validated_data['oarlength']
|
||||||
|
instance.privacy=validated_data['privacy']
|
||||||
|
instance.rankingpiece=validated_data['rankingpiece']
|
||||||
|
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|||||||
@@ -203,6 +203,12 @@
|
|||||||
<li><b>peakdriveforce</b>: Peak handle force (lbs)</li>
|
<li><b>peakdriveforce</b>: Peak handle force (lbs)</li>
|
||||||
<li><b>lapidx</b>: Lap identifier</li>
|
<li><b>lapidx</b>: Lap identifier</li>
|
||||||
<li><b>hr</b>: Heart rate (beats per minute)</li>
|
<li><b>hr</b>: Heart rate (beats per minute)</li>
|
||||||
|
<li><b>wash</b>: Wash as defined per Empower oarlock (degrees)</li>
|
||||||
|
<li><b>catch</b>: Catch angle per Empower oarlock (degrees)</li>
|
||||||
|
<li><b>finish</b>: Finish angle per Empower oarlock (degrees)</li>
|
||||||
|
<li><b>peakforceangle</b>: Peak Force Angle per Empower oarlock (degrees)</li>
|
||||||
|
<li><b>slip</b>: Wash as defined per Empower oarlock (degrees)</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>Consistency checks will be done and the stroke data will be
|
<p>Consistency checks will be done and the stroke data will be
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<div class="grid_12 alpha">
|
<div class="grid_12 alpha">
|
||||||
<h1>Stroke Data for workout {{ id }}</h1>
|
<h1>Stroke Data for workout {{ id }}</h1>
|
||||||
|
|
||||||
<form enctype="multipart/form-data" action="/rowers/api/workouts/{{ id }}/strokedata" method="post">
|
<form enctype="application/json" action="/rowers/api/workouts/{{ id }}/strokedata" method="post">
|
||||||
<table>
|
<table>
|
||||||
{{ form.as_table }}
|
{{ form.as_table }}
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -11480,7 +11480,10 @@ def strokedatajson(request,id):
|
|||||||
df.index = df.index.astype(int)
|
df.index = df.index.astype(int)
|
||||||
df.sort_index(inplace=True)
|
df.sort_index(inplace=True)
|
||||||
# time, hr, pace, spm, power, drivelength, distance, drivespeed, dragfactor, strokerecoverytime, averagedriveforce, peakdriveforce, lapidx
|
# time, hr, pace, spm, power, drivelength, distance, drivespeed, dragfactor, strokerecoverytime, averagedriveforce, peakdriveforce, lapidx
|
||||||
|
try:
|
||||||
time = df['time']/1.e3
|
time = df['time']/1.e3
|
||||||
|
except KeyError:
|
||||||
|
return HttpResponse("There must be time values",status=400)
|
||||||
aantal = len(time)
|
aantal = len(time)
|
||||||
pace = df['pace']/1.e3
|
pace = df['pace']/1.e3
|
||||||
if len(pace) != aantal:
|
if len(pace) != aantal:
|
||||||
@@ -11505,14 +11508,20 @@ def strokedatajson(request,id):
|
|||||||
strokerecoverytime = trydf(df,aantal,'strokerecoverytime')
|
strokerecoverytime = trydf(df,aantal,'strokerecoverytime')
|
||||||
averagedriveforce = trydf(df,aantal,'averagedriveforce')
|
averagedriveforce = trydf(df,aantal,'averagedriveforce')
|
||||||
peakdriveforce = trydf(df,aantal,'peakdriveforce')
|
peakdriveforce = trydf(df,aantal,'peakdriveforce')
|
||||||
|
wash = trydf(df,aantal,'wash')
|
||||||
|
catch = trydf(df,aantal,'catch')
|
||||||
|
finish = trydf(df,aantal,'finish')
|
||||||
|
peakforceangle = trydf(df,aantal,'peakforceangle')
|
||||||
|
driveenergy = trydf(df,aantal,'driveenergy')
|
||||||
|
slip = trydf(df,aantal,'slip')
|
||||||
lapidx = trydf(df,aantal,'lapidx')
|
lapidx = trydf(df,aantal,'lapidx')
|
||||||
hr = trydf(df,aantal,'hr')
|
hr = trydf(df,aantal,'hr')
|
||||||
|
|
||||||
starttime = totimestamp(row.startdatetime)+time
|
starttime = totimestamp(row.startdatetime)+time[0]
|
||||||
unixtime = starttime+time
|
unixtime = starttime+time
|
||||||
|
|
||||||
with open('media/apilog.log','a') as logfile:
|
with open('media/apilog.log','a') as logfile:
|
||||||
logfile.write(starttime+": ")
|
logfile.write(str(starttime)+": ")
|
||||||
logfile.write(request.user.username+"(POST) \r\n")
|
logfile.write(request.user.username+"(POST) \r\n")
|
||||||
|
|
||||||
data = pd.DataFrame({'TimeStamp (sec)':unixtime,
|
data = pd.DataFrame({'TimeStamp (sec)':unixtime,
|
||||||
@@ -11529,10 +11538,18 @@ def strokedatajson(request,id):
|
|||||||
' PeakDriveForce (lbs)':peakdriveforce,
|
' PeakDriveForce (lbs)':peakdriveforce,
|
||||||
' lapIdx':lapidx,
|
' lapIdx':lapidx,
|
||||||
' ElapsedTime (sec)':time,
|
' ElapsedTime (sec)':time,
|
||||||
|
'catch':catch,
|
||||||
|
'slip':slip,
|
||||||
|
'finish':finish,
|
||||||
|
'wash':wash,
|
||||||
|
'driveenergy':driveenergy,
|
||||||
|
'peakforceangle':peakforceangle,
|
||||||
})
|
})
|
||||||
|
|
||||||
# Following part should be replaced with dataprep.new_workout_from_df
|
# Following part should be replaced with dataprep.new_workout_from_df
|
||||||
|
|
||||||
|
r = getrower(request.user)
|
||||||
|
|
||||||
timestr = row.startdatetime.strftime("%Y%m%d-%H%M%S")
|
timestr = row.startdatetime.strftime("%Y%m%d-%H%M%S")
|
||||||
csvfilename ='media/Import_'+timestr+'.csv'
|
csvfilename ='media/Import_'+timestr+'.csv'
|
||||||
|
|
||||||
@@ -11541,7 +11558,6 @@ def strokedatajson(request,id):
|
|||||||
row.csvfilename = csvfilename
|
row.csvfilename = csvfilename
|
||||||
row.save()
|
row.save()
|
||||||
|
|
||||||
r = getrower(request.user)
|
|
||||||
powerperc = 100*np.array([r.pw_ut2,
|
powerperc = 100*np.array([r.pw_ut2,
|
||||||
r.pw_ut1,
|
r.pw_ut1,
|
||||||
r.pw_at,
|
r.pw_at,
|
||||||
|
|||||||
Reference in New Issue
Block a user