Merge branch 'feature/c2splits' into develop
This commit is contained in:
@@ -77,6 +77,72 @@ def c2wc(weightclass):
|
|||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
def summaryfromsplitdata(splitdata,data,filename,sep='|'):
|
||||||
|
|
||||||
|
totaldist = data['distance']
|
||||||
|
totaltime = data['time']/10.
|
||||||
|
spm = data['stroke_rate']
|
||||||
|
resttime = data['rest_time']/10.
|
||||||
|
restdistance = data['rest_distance']
|
||||||
|
try:
|
||||||
|
avghr = data['heart_rate']['average']
|
||||||
|
except KeyError:
|
||||||
|
avghr = 0
|
||||||
|
try:
|
||||||
|
maxhr = data['heart_rate']['max']
|
||||||
|
except KeyError:
|
||||||
|
maxhr = 0
|
||||||
|
|
||||||
|
avgpace = 500.*totaltime/totaldist
|
||||||
|
restpace = 500.*resttime/restdistance
|
||||||
|
|
||||||
|
velo = totaldist/totaltime
|
||||||
|
avgpower = 2.8*velo**(3.0)
|
||||||
|
|
||||||
|
restvelo = restdistance/resttime
|
||||||
|
restpower = 2.8*restvelo**(3.0)
|
||||||
|
|
||||||
|
avgdps = totaldist/data['stroke_count']
|
||||||
|
|
||||||
|
from rowingdata import summarystring,workstring,interval_string
|
||||||
|
|
||||||
|
sums = summarystring(totaldist,totaltime,avgpace,spm,avghr,maxhr,
|
||||||
|
avgdps,avgpower,readFile=filename,
|
||||||
|
separator=sep)
|
||||||
|
|
||||||
|
sums += workstring(totaldist,totaltime,avgpace,spm,avghr,maxhr,
|
||||||
|
avgdps,avgpower,separator=sep,symbol='W')
|
||||||
|
|
||||||
|
sums += workstring(restdistance,resttime,restpace,0,0,0,0,restpower,
|
||||||
|
separator=sep,
|
||||||
|
symbol='R')
|
||||||
|
|
||||||
|
intervalnr=0
|
||||||
|
for interval in splitdata:
|
||||||
|
idist = interval['distance']
|
||||||
|
itime = interval['time']/10.
|
||||||
|
ipace = 500.*itime/idist
|
||||||
|
ispm = interval['stroke_rate']
|
||||||
|
try:
|
||||||
|
iavghr = interval['heart_rate']['average']
|
||||||
|
except KeyError:
|
||||||
|
iavghr = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
imaxhr = interval['heart_rate']['average']
|
||||||
|
except KeyError:
|
||||||
|
imaxhr = 0
|
||||||
|
|
||||||
|
ivelo = idist/itime
|
||||||
|
ipower = 2.8*ivelo**(3.0)
|
||||||
|
|
||||||
|
sums += interval_string(intervalnr,idist,itime,ipace,ispm,
|
||||||
|
iavghr,imaxhr,0,ipower,separator=sep)
|
||||||
|
intervalnr+=1
|
||||||
|
|
||||||
|
return sums
|
||||||
|
|
||||||
def createc2workoutdata_as_splits(w):
|
def createc2workoutdata_as_splits(w):
|
||||||
filename = w.csvfilename
|
filename = w.csvfilename
|
||||||
row = rowingdata(filename)
|
row = rowingdata(filename)
|
||||||
|
|||||||
@@ -319,7 +319,8 @@ def checkworkoutuser(user,workout):
|
|||||||
except Rower.DoesNotExist:
|
except Rower.DoesNotExist:
|
||||||
return(False)
|
return(False)
|
||||||
|
|
||||||
def add_workout_from_strokedata(user,importid,data,strokedata,source='c2'):
|
def add_workout_from_strokedata(user,importid,data,strokedata,
|
||||||
|
source='c2',splitdata=None):
|
||||||
workouttype = data['type']
|
workouttype = data['type']
|
||||||
if workouttype not in [x[0] for x in Workout.workouttypes]:
|
if workouttype not in [x[0] for x in Workout.workouttypes]:
|
||||||
workouttype = 'water'
|
workouttype = 'water'
|
||||||
@@ -3696,6 +3697,12 @@ def workout_getc2workout_view(request,c2id):
|
|||||||
res = c2stuff.get_c2_workout(request.user,c2id)
|
res = c2stuff.get_c2_workout(request.user,c2id)
|
||||||
if (res.status_code == 200):
|
if (res.status_code == 200):
|
||||||
data = res.json()['data']
|
data = res.json()['data']
|
||||||
|
splitdata = None
|
||||||
|
if 'splits' in data['workout']:
|
||||||
|
splitdata = data['workout']['splits']
|
||||||
|
if 'intervals' in data['workout']:
|
||||||
|
splitdata = data['workout']['intervals']
|
||||||
|
|
||||||
if data['stroke_data']:
|
if data['stroke_data']:
|
||||||
res2 = c2stuff.get_c2_workout_strokes(request.user,c2id)
|
res2 = c2stuff.get_c2_workout_strokes(request.user,c2id)
|
||||||
else:
|
else:
|
||||||
@@ -3712,7 +3719,17 @@ def workout_getc2workout_view(request,c2id):
|
|||||||
source='c2')
|
source='c2')
|
||||||
w = Workout.objects.get(id=id)
|
w = Workout.objects.get(id=id)
|
||||||
w.uploadedtoc2=c2id
|
w.uploadedtoc2=c2id
|
||||||
w.save()
|
if splitdata:
|
||||||
|
try:
|
||||||
|
w.summary = c2stuff.summaryfromsplitdata(splitdata,data,w.csvfilename)
|
||||||
|
except:
|
||||||
|
with open("media/c2splitdata.log","a") as errorlog:
|
||||||
|
errorstring = str(sys.exc_info()[0])
|
||||||
|
timestr = strftime("%Y%m%d-%H%M%S")
|
||||||
|
errorlog.write(timestr+errorstring+"\r\n")
|
||||||
|
errorlog.write("views.py line 952\r\n")
|
||||||
|
|
||||||
|
w.save()
|
||||||
url = "/rowers/workout/"+str(id)+"/edit"
|
url = "/rowers/workout/"+str(id)+"/edit"
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user