diff --git a/rowers/forms.py b/rowers/forms.py
index 312c6d65..46443563 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -385,6 +385,7 @@ class UploadOptionsForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request',None)
+ raceid = kwargs.pop('raceid',0)
super(UploadOptionsForm, self).__init__(*args, **kwargs)
r = Rower.objects.get(user=self.request.user)
races = VirtualRace.objects.filter(
@@ -405,6 +406,9 @@ class UploadOptionsForm(forms.Form):
else:
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
# after a successful upload. This version allows the Team manager to select
# a team member
diff --git a/rowers/templates/virtualevent.html b/rowers/templates/virtualevent.html
index 25c90e4a..5b9edac9 100644
--- a/rowers/templates/virtualevent.html
+++ b/rowers/templates/virtualevent.html
@@ -177,7 +177,7 @@
|
- Upload your race result
+ Upload your race result
|
Upload a new workout to the site and submit it as a result. You
diff --git a/rowers/urls.py b/rowers/urls.py
index f989100e..f091bcdd 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -295,6 +295,7 @@ urlpatterns = [
re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/toggle-ranking/$',views.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/(?P\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/(?P\b[0-9A-Fa-f]+\b)/histo/$',views.workout_histo_view,
name='workout_histo_view'),
diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py
index 9858b060..aa712178 100644
--- a/rowers/views/analysisviews.py
+++ b/rowers/views/analysisviews.py
@@ -4695,9 +4695,16 @@ def history_view(request,userid=0):
ids = [w.id for w in g_workouts]
- columns = ['hr','power']
+ columns = ['hr','power','time']
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)
@@ -4723,9 +4730,16 @@ def history_view(request,userid=0):
wminutes=wminutes
)
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['powermean'] = ddf['power'].mean().astype(int)
+ ddict['powermean'] = int(wavg(df,'power','deltat'))
ddict['powermax'] = ddf['power'].max().astype(int)
ddict['nrworkouts'] = a_workouts.count()
listofdicts.append(ddict)
@@ -4737,6 +4751,12 @@ def history_view(request,userid=0):
else:
a_workouts = g_workouts.filter(workouttype=typeselect)
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])
# interactive power pie chart
@@ -4749,13 +4769,13 @@ def history_view(request,userid=0):
totalsdict['distance'] = totalmeters
try:
- totalsdict['powermean'] = df['power'].mean().astype(int)
+ totalsdict['powermean'] = int(wavg(df,'power','deltat'))
totalsdict['powermax'] = df['power'].max().astype(int)
except KeyError:
totalsdict['powermean'] = 0
totalsdict['powermax'] = 0
try:
- totalsdict['hrmean'] = df['hr'].mean().astype(int)
+ totalsdict['hrmean'] = int(wavg(df,'hr','deltat'))
totalsdict['hrmax'] = df['hr'].max().astype(int)
except KeyError:
totalsdict['hrmean'] = 0
diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py
index 952b6fa9..2c7ecf62 100644
--- a/rowers/views/workoutviews.py
+++ b/rowers/views/workoutviews.py
@@ -4614,7 +4614,8 @@ def workout_upload_view(request,
},
docformoptions={
'workouttype':'rower',
- }):
+ },
+ raceid=0):
is_ajax = False
if request.is_ajax():
@@ -4727,7 +4728,7 @@ def workout_upload_view(request,
response = {}
if request.method == 'POST':
form = DocumentsForm(request.POST,request.FILES)
- optionsform = UploadOptionsForm(request.POST,request=request)
+ optionsform = UploadOptionsForm(request.POST,request=request,raceid=raceid)
if form.is_valid():
# f = request.FILES['file']
@@ -5031,7 +5032,7 @@ def workout_upload_view(request,
form = DocumentsForm(initial=docformoptions)
optionsform = UploadOptionsForm(initial=uploadoptions,
- request=request)
+ request=request,raceid=raceid)
return render(request, 'document_form.html',
{'form':form,
'active':'nav-workouts',
|