Merge branch 'release/v12.24'
This commit is contained in:
@@ -385,6 +385,7 @@ class UploadOptionsForm(forms.Form):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.request = kwargs.pop('request',None)
|
self.request = kwargs.pop('request',None)
|
||||||
|
raceid = kwargs.pop('raceid',0)
|
||||||
super(UploadOptionsForm, self).__init__(*args, **kwargs)
|
super(UploadOptionsForm, self).__init__(*args, **kwargs)
|
||||||
r = Rower.objects.get(user=self.request.user)
|
r = Rower.objects.get(user=self.request.user)
|
||||||
races = VirtualRace.objects.filter(
|
races = VirtualRace.objects.filter(
|
||||||
@@ -405,6 +406,9 @@ class UploadOptionsForm(forms.Form):
|
|||||||
else:
|
else:
|
||||||
del self.fields['submitrace']
|
del self.fields['submitrace']
|
||||||
|
|
||||||
|
if int(raceid) in raceids:
|
||||||
|
self.fields['submitrace'].initial = VirtualRace.objects.get(id=raceid)
|
||||||
|
|
||||||
# The form to indicate additional actions to be performed immediately
|
# The form to indicate additional actions to be performed immediately
|
||||||
# after a successful upload. This version allows the Team manager to select
|
# after a successful upload. This version allows the Team manager to select
|
||||||
# a team member
|
# a team member
|
||||||
|
|||||||
@@ -177,7 +177,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="/rowers/workout/upload">Upload your race result</a>
|
<a href="/rowers/workout/upload/{{ race.id }}/">Upload your race result</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
Upload a new workout to the site and submit it as a result. You
|
Upload a new workout to the site and submit it as a result. You
|
||||||
|
|||||||
@@ -295,6 +295,7 @@ urlpatterns = [
|
|||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.workout_toggle_ranking,
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.workout_toggle_ranking,
|
||||||
name='workout_toggle_ranking'),
|
name='workout_toggle_ranking'),
|
||||||
re_path(r'^workout/upload/team/$',views.team_workout_upload_view,name='team_workout_upload_view'),
|
re_path(r'^workout/upload/team/$',views.team_workout_upload_view,name='team_workout_upload_view'),
|
||||||
|
re_path(r'^workout/upload/(?P<raceid>\d+)/$',views.workout_upload_view,name='workout_upload_view'),
|
||||||
re_path(r'^workout/upload/$',views.workout_upload_view,name='workout_upload_view'),
|
re_path(r'^workout/upload/$',views.workout_upload_view,name='workout_upload_view'),
|
||||||
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/histo/$',views.workout_histo_view,
|
re_path(r'^workout/(?P<id>\b[0-9A-Fa-f]+\b)/histo/$',views.workout_histo_view,
|
||||||
name='workout_histo_view'),
|
name='workout_histo_view'),
|
||||||
|
|||||||
@@ -4695,9 +4695,16 @@ def history_view(request,userid=0):
|
|||||||
|
|
||||||
ids = [w.id for w in g_workouts]
|
ids = [w.id for w in g_workouts]
|
||||||
|
|
||||||
columns = ['hr','power']
|
columns = ['hr','power','time']
|
||||||
|
|
||||||
df = getsmallrowdata_db(columns,ids=ids)
|
df = getsmallrowdata_db(columns,ids=ids)
|
||||||
|
try:
|
||||||
|
df['deltat'] = df['time'].diff()
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
df = dataprep.clean_df_stats(df,workstrokesonly=True,
|
||||||
|
ignoreadvanced=True)
|
||||||
|
|
||||||
|
|
||||||
totalmeters,totalhours, totalminutes = get_totals(g_workouts)
|
totalmeters,totalhours, totalminutes = get_totals(g_workouts)
|
||||||
|
|
||||||
@@ -4723,9 +4730,16 @@ def history_view(request,userid=0):
|
|||||||
wminutes=wminutes
|
wminutes=wminutes
|
||||||
)
|
)
|
||||||
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
||||||
ddict['hrmean'] = ddf['hr'].mean().astype(int)
|
try:
|
||||||
|
ddf['deltat'] = ddf['time'].diff()
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True,
|
||||||
|
ignoreadvanced=True)
|
||||||
|
|
||||||
|
ddict['hrmean'] = int(wavg(ddf,'hr','deltat'))
|
||||||
ddict['hrmax'] = ddf['hr'].max().astype(int)
|
ddict['hrmax'] = ddf['hr'].max().astype(int)
|
||||||
ddict['powermean'] = ddf['power'].mean().astype(int)
|
ddict['powermean'] = int(wavg(df,'power','deltat'))
|
||||||
ddict['powermax'] = ddf['power'].max().astype(int)
|
ddict['powermax'] = ddf['power'].max().astype(int)
|
||||||
ddict['nrworkouts'] = a_workouts.count()
|
ddict['nrworkouts'] = a_workouts.count()
|
||||||
listofdicts.append(ddict)
|
listofdicts.append(ddict)
|
||||||
@@ -4737,6 +4751,12 @@ def history_view(request,userid=0):
|
|||||||
else:
|
else:
|
||||||
a_workouts = g_workouts.filter(workouttype=typeselect)
|
a_workouts = g_workouts.filter(workouttype=typeselect)
|
||||||
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
ddf = getsmallrowdata_db(columns,ids=[w.id for w in a_workouts])
|
||||||
|
try:
|
||||||
|
ddf['deltat'] = ddf['time'].diff()
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
ddf = dataprep.clean_df_stats(ddf,workstrokesonly=True,
|
||||||
|
ignoreadvanced=True)
|
||||||
totalscript, totaldiv = interactive_hr_piechart(ddf,r,mytypes.workouttypes_ordered[typeselect])
|
totalscript, totaldiv = interactive_hr_piechart(ddf,r,mytypes.workouttypes_ordered[typeselect])
|
||||||
|
|
||||||
# interactive power pie chart
|
# interactive power pie chart
|
||||||
@@ -4749,13 +4769,13 @@ def history_view(request,userid=0):
|
|||||||
|
|
||||||
totalsdict['distance'] = totalmeters
|
totalsdict['distance'] = totalmeters
|
||||||
try:
|
try:
|
||||||
totalsdict['powermean'] = df['power'].mean().astype(int)
|
totalsdict['powermean'] = int(wavg(df,'power','deltat'))
|
||||||
totalsdict['powermax'] = df['power'].max().astype(int)
|
totalsdict['powermax'] = df['power'].max().astype(int)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
totalsdict['powermean'] = 0
|
totalsdict['powermean'] = 0
|
||||||
totalsdict['powermax'] = 0
|
totalsdict['powermax'] = 0
|
||||||
try:
|
try:
|
||||||
totalsdict['hrmean'] = df['hr'].mean().astype(int)
|
totalsdict['hrmean'] = int(wavg(df,'hr','deltat'))
|
||||||
totalsdict['hrmax'] = df['hr'].max().astype(int)
|
totalsdict['hrmax'] = df['hr'].max().astype(int)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
totalsdict['hrmean'] = 0
|
totalsdict['hrmean'] = 0
|
||||||
|
|||||||
@@ -4614,7 +4614,8 @@ def workout_upload_view(request,
|
|||||||
},
|
},
|
||||||
docformoptions={
|
docformoptions={
|
||||||
'workouttype':'rower',
|
'workouttype':'rower',
|
||||||
}):
|
},
|
||||||
|
raceid=0):
|
||||||
|
|
||||||
is_ajax = False
|
is_ajax = False
|
||||||
if request.is_ajax():
|
if request.is_ajax():
|
||||||
@@ -4727,7 +4728,7 @@ def workout_upload_view(request,
|
|||||||
response = {}
|
response = {}
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = DocumentsForm(request.POST,request.FILES)
|
form = DocumentsForm(request.POST,request.FILES)
|
||||||
optionsform = UploadOptionsForm(request.POST,request=request)
|
optionsform = UploadOptionsForm(request.POST,request=request,raceid=raceid)
|
||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
# f = request.FILES['file']
|
# f = request.FILES['file']
|
||||||
@@ -5031,7 +5032,7 @@ def workout_upload_view(request,
|
|||||||
|
|
||||||
form = DocumentsForm(initial=docformoptions)
|
form = DocumentsForm(initial=docformoptions)
|
||||||
optionsform = UploadOptionsForm(initial=uploadoptions,
|
optionsform = UploadOptionsForm(initial=uploadoptions,
|
||||||
request=request)
|
request=request,raceid=raceid)
|
||||||
return render(request, 'document_form.html',
|
return render(request, 'document_form.html',
|
||||||
{'form':form,
|
{'form':form,
|
||||||
'active':'nav-workouts',
|
'active':'nav-workouts',
|
||||||
|
|||||||
Reference in New Issue
Block a user