Private
Public Access
1
0

OTW power CP graph working!

This commit is contained in:
Sander Roosendaal
2017-06-08 14:19:21 +02:00
parent 8b42de8a53
commit 832d6f8878
4 changed files with 130 additions and 84 deletions

View File

@@ -292,14 +292,11 @@ def iscoachmember(user):
return result
def getrower(user):
if not user.is_anonymous():
try:
r = Rower.objects.get(user=user)
except Rower.DoesNotExist:
r = Rower(user=user)
r.save()
else:
raise PermissionDenied("You need to log in to use this function")
try:
r = Rower.objects.get(user=user)
except Rower.DoesNotExist:
r = Rower(user=user)
r.save()
return r
@@ -2900,8 +2897,10 @@ def otwrankings_view(request,theuser=0,
thesecs.append(timesecs)
maxt = pd.Series(thesecs).max()
if len(thesecs) != 0:
maxt = pd.Series(thesecs).max()
else:
maxt = 1000.
maxlog10 = np.log10(maxt)
logarr = np.arange(100)*maxlog10/100.
@@ -2912,11 +2911,16 @@ def otwrankings_view(request,theuser=0,
delta = []
cpvalue = []
avgpower = {}
dfgrouped = df.groupby(['workoutid'])
for id,group in dfgrouped:
tt = group['time']
ww = group['power']
try:
avgpower[id] = int(ww.mean())
except ValueError:
avgpower[id] = '---'
if not np.isnan(ww.mean()):
length = len(ww)
dt = []
@@ -2946,6 +2950,7 @@ def otwrankings_view(request,theuser=0,
for d in logarr:
delta.append(d)
print avgpower
dt = pd.Series(delta,name='Delta')
cpvalue = pd.Series(cpvalue,name='CP')
@@ -2955,13 +2960,15 @@ def otwrankings_view(request,theuser=0,
'CP':cpvalue,
})
powerdf.sort_values(['Delta','CP'],ascending=[1,0])
powerdf.drop_duplicates(subset='Delta',keep='first')
powerdf = powerdf[powerdf['CP']>0]
powerdf.dropna(axis=0,inplace=True)
powerdf.sort_values(['Delta','CP'],ascending=[1,0],inplace=True)
powerdf.drop_duplicates(subset='Delta',keep='first',inplace=True)
# create interactive plot
if len(powerdf) !=0 :
res = interactive_otwcpchart(powerdf)
res = interactive_otwcpchart(powerdf,promember=promember)
script = res[0]
div = res[1]
p1 = res[2]
@@ -2979,16 +2986,12 @@ def otwrankings_view(request,theuser=0,
if request.method == 'POST' and "piece" in request.POST:
form = PredictedPieceForm(request.POST)
if form.is_valid():
value = form.cleaned_data['value']
hourvalue,value = divmod(value,60)
if hourvalue >= 24:
hourvalue = 23
pieceunit = form.cleaned_data['pieceunit']
if pieceunit == 'd':
rankingdistances.append(value)
else:
rankingdurations.append(datetime.time(minute=value,hour=hourvalue))
clean = form.is_valid()
value = form.cleaned_data['value']
hourvalue,value = divmod(value,60)
if hourvalue >= 24:
hourvalue = 23
rankingdurations.append(datetime.time(minute=value,hour=hourvalue))
else:
form = PredictedPieceForm()
@@ -3012,13 +3015,15 @@ def otwrankings_view(request,theuser=0,
if pwr <= 0:
pwr = 50.
a = {
'duration':timedeltaconv(t),
'power':int(pwr)}
cpredictions.append(a)
if not np.isnan(pwr):
a = {
'duration':timedeltaconv(t),
'power':int(pwr)}
cpredictions.append(a)
print cpredictions
del form.fields["pieceunit"]
messages.error(request,message)
return render(request, 'otwrankings.html',
{'rankingworkouts':theworkouts,
@@ -3026,6 +3031,7 @@ def otwrankings_view(request,theuser=0,
'the_div':div,
'predictions':predictions,
'cpredictions':cpredictions,
'avgpower':avgpower,
'form':form,
'dateform':dateform,
'deltaform':deltaform,