Private
Public Access
1
0

Merge branch 'develop' into feature/ranking

This commit is contained in:
Sander Roosendaal
2018-01-16 15:36:55 +01:00
5 changed files with 46 additions and 19 deletions

View File

@@ -2038,7 +2038,7 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True,
if barchart: if barchart:
# time increments for bar chart # time increments for bar chart
time_increments = rowdatadf.ix[:, ' ElapsedTime (sec)'].diff() time_increments = rowdatadf.ix[:, ' ElapsedTime (sec)'].diff()
time_increments[0] = time_increments[1] time_increments.ix[0] = time_increments.ix[1]
time_increments = 0.5 * time_increments + 0.5 * np.abs(time_increments) time_increments = 0.5 * time_increments + 0.5 * np.abs(time_increments)
x_right = (t2 + time_increments.apply(lambda x: timedeltaconv(x))) x_right = (t2 + time_increments.apply(lambda x: timedeltaconv(x)))

View File

@@ -1482,13 +1482,14 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower,
# fitting the data to three parameter CP model # fitting the data to three parameter CP model
success = 0
p1 = p0 p1 = p0
if len(thesecs)>=4: if len(thesecs)>=4:
p1, success = optimize.leastsq(errfunc, p0[:], args = (thesecs,theavpower)) p1, success = optimize.leastsq(errfunc, p0[:], args = (thesecs,theavpower))
else: else:
factor = fitfunc(p0,thesecs.mean())/theavpower.mean() factor = fitfunc(p0,thesecs.mean())/theavpower.mean()
p1 = [p0[0]/factor,p0[1]/factor,p0[2],p0[3]] p1 = [p0[0]/factor,p0[1]/factor,p0[2],p0[3]]
success = 0
# Get stayer score # Get stayer score

View File

@@ -1238,37 +1238,58 @@ class RowerForm(ModelForm):
try: try:
rest = self.cleaned_data['rest'] rest = self.cleaned_data['rest']
except: except:
rest = int(self.data['rest']) try:
rest = int(self.data['rest'])
except ValueError:
rest = 0
try: try:
ut2 = self.cleaned_data['ut2'] ut2 = self.cleaned_data['ut2']
except: except:
ut2 = self.data['ut2'] try:
ut2 = self.data['ut2']
except ValueError:
ut2 = 0
try: try:
ut1 = self.cleaned_data['ut1'] ut1 = self.cleaned_data['ut1']
except: except:
ut1 = self.data['ut1'] try:
ut1 = self.data['ut1']
except ValueError:
ut1 = 0
try: try:
at = self.cleaned_data['at'] at = self.cleaned_data['at']
except: except:
at = self.data['at'] try:
at = self.data['at']
except ValueError:
at = 0
try: try:
an = self.cleaned_data['an'] an = self.cleaned_data['an']
except: except:
an = self.data['an'] try:
an = self.data['an']
except ValueError:
an = 0
try: try:
tr = self.cleaned_data['tr'] tr = self.cleaned_data['tr']
except: except:
tr = self.data['tr'] try:
tr = self.data['tr']
except ValueError:
tr = 0
try: try:
max = self.cleaned_data['max'] max = self.cleaned_data['max']
except: except:
max = self.data['max'] try:
max = self.data['max']
except ValueError:
max = 0
if rest>=ut2: if rest>=ut2:
raise forms.ValidationError("Resting heart rate should be lower than UT2") raise forms.ValidationError("Resting heart rate should be lower than UT2")

View File

@@ -133,8 +133,7 @@
</td> </td>
{% else %} {% else %}
<td> <td>
<a href={% url rower.defaultlandingpage <a href={% url rower.defaultlandingpage id=workout.id %}>No Name
id=workout.id %}>No Name
</a></td> </a></td>
{% endif %} {% endif %}
{% else %} {% else %}

View File

@@ -3585,7 +3585,7 @@ def rankings_view2(request,theuser=0,
promember=0 promember=0
if not request.user.is_anonymous(): if not request.user.is_anonymous():
r = getrower(theuser) r = getrower(request.user)
wcdurations = [] wcdurations = []
wcpower = [] wcpower = []
@@ -4129,7 +4129,7 @@ def otwrankings_view(request,theuser=0,
request.session['async_tasks'] += [(job.id,'updatecpwater')] request.session['async_tasks'] += [(job.id,'updatecpwater')]
except KeyError: except KeyError:
request.session['async_tasks'] = [(job.id,'updatecpwater')] request.session['async_tasks'] = [(job.id,'updatecpwater')]
messages.info(request,'New calculation queued. Refresh page or resubmit the date form to get the result') messages.info(request,'New calculation queued. Page will reload automatically. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>')
powerdf = pd.DataFrame({ powerdf = pd.DataFrame({
'Delta':delta, 'Delta':delta,
@@ -4137,7 +4137,7 @@ def otwrankings_view(request,theuser=0,
}) })
if powerdf.empty: if powerdf.empty:
messages.info(request,'Your calculations are running in the background. Please reload this page.') messages.info(request,'Your calculations are running in the background. Page will reload automatically. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>')
powerdf = powerdf[powerdf['CP']>0] powerdf = powerdf[powerdf['CP']>0]
powerdf.dropna(axis=0,inplace=True) powerdf.dropna(axis=0,inplace=True)
@@ -4383,7 +4383,7 @@ def oterankings_view(request,theuser=0,
request.session['async_tasks'] += [(job.id,'updatecp')] request.session['async_tasks'] += [(job.id,'updatecp')]
except KeyError: except KeyError:
request.session['async_tasks'] = [(job.id,'updatecp')] request.session['async_tasks'] = [(job.id,'updatecp')]
messages.info(request,'New calculation queued.') messages.info(request,'New calculation queued. Page will reload automatically. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>')
powerdf = pd.DataFrame({ powerdf = pd.DataFrame({
'Delta':delta, 'Delta':delta,
@@ -4391,7 +4391,7 @@ def oterankings_view(request,theuser=0,
}) })
if powerdf.empty: if powerdf.empty:
messages.info(request,'Your calculations are running in the background. Please reload this page.') messages.info(request,'Your calculations are running in the background. Page will reload automatically. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>')
powerdf = powerdf[powerdf['CP']>0] powerdf = powerdf[powerdf['CP']>0]
powerdf.dropna(axis=0,inplace=True) powerdf.dropna(axis=0,inplace=True)
@@ -6884,7 +6884,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
except KeyError: except KeyError:
request.session['async_tasks'] = [(job.id,'otwsetpower')] request.session['async_tasks'] = [(job.id,'otwsetpower')]
successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations <a href="/rowers/jobs-status/">here</a>' successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations <a href="/rowers/jobs-status/" target="_blank">here</a>'
messages.info(request,successmessage) messages.info(request,successmessage)
kwargs = { kwargs = {
'id':int(id)} 'id':int(id)}
@@ -10182,7 +10182,13 @@ def workout_split_view(request,id=id):
else: else:
url = reverse(workouts_view) url = reverse(workouts_view)
qdict = {'q':row.name} rowname = row.name
if isinstance(rowname,unicode):
rowname = rowname.encode('utf8')
elif isinstance(rowname, str):
rowname = rowname.decode('utf8')
qdict = {'q':rowname}
url+='?'+urllib.urlencode(qdict) url+='?'+urllib.urlencode(qdict)
return HttpResponseRedirect(url) return HttpResponseRedirect(url)