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',