|
- Enter your race result manually
+ Enter your race result manually
|
If you don't have a data file, enter the results
diff --git a/rowers/urls.py b/rowers/urls.py
index a616e32c..75479549 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -198,6 +198,7 @@ urlpatterns = [
re_path(r'^list-workouts/$',views.workouts_view,name='workouts_view'),
re_path(r'^list-courses/$',views.courses_view,name='courses_view'),
re_path(r'^courses/upload/$',views.course_upload_view,name='course_upload_view'),
+ re_path(r'^workout/addmanual/(?P\d+)$',views.addmanual_view,name='addmanual_view'),
re_path(r'^workout/addmanual/$',views.addmanual_view,name='addmanual_view'),
re_path(r'^team-compare-select/workout/(?P\d+)/team/(?P\d+)/user/(?P\d+)/$',views.team_comparison_select,name='team_comparison_select'),
# re_path(r'^team-compare-select/team/(?P\d+)/(?P\d+-\d+-\d+)/(?P\d+-\d+-\d+)/user/(?P\d+)/$',views.team_comparison_select,name='team_comparison_select'),
diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py
index 15ea49d4..a60603cc 100644
--- a/rowers/views/racesviews.py
+++ b/rowers/views/racesviews.py
@@ -465,6 +465,9 @@ def virtualevents_view(request):
races = (races1 | races2).order_by("startdate","start_time")
+ if len(races) == 0:
+ races = VirtualRace.objects.all()
+
if not request.user.is_anonymous:
r = getrower(request.user)
else:
diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py
index 2e5701e0..bb192e93 100644
--- a/rowers/views/workoutviews.py
+++ b/rowers/views/workoutviews.py
@@ -555,7 +555,7 @@ def workout_histo_view(request,id=0):
# add a workout manually
@login_required()
-def addmanual_view(request):
+def addmanual_view(request,raceid=0):
r = Rower.objects.get(user=request.user)
breadcrumbs = [
@@ -665,6 +665,79 @@ def addmanual_view(request):
messages.info(request,'New workout created')
+ iform = ImageForm(request.POST,request.FILES)
+ if iform.is_valid():
+ f = iform.cleaned_data['file']
+
+ if f is not None:
+ filename,path_and_filename = handle_uploaded_image(f)
+ try:
+ width, height = Image.open(path_and_filename).size
+ except:
+ message = "Not a valid image"
+ messages.error(request,message)
+ os.remove(path_and_filename)
+
+ i = GraphImage(workout=w,
+ creationdatetime=timezone.now(),
+ filename = path_and_filename,
+ width=width,height=height)
+ i.save()
+
+ if raceid != 0:
+ try:
+ race = VirtualRace.objects.get(id=raceid)
+ except VirtualRace.DoesNotExist:
+ messages.error(request,"Race does not exist")
+ url = reverse('workout_edit_view',
+ kwargs = {'id':encoder.encode_hex(id)})
+ return HttpResponseRedirect(url)
+
+ can_submit = race_can_submit(r,race) or race_can_resubmit(r,race)
+ can_submit = can_submit and race.sessiontype == 'indoorrace'
+ if not can_submit:
+ messages.error(request,'You cannot submit a result for this race')
+ if can_submit:
+ records = IndoorVirtualRaceResult.objects.filter(race=race,userid=r.id)
+ if not records:
+ messages.error(request,'You have to register for the race first')
+ url = reverse('virtualevent_view',kwargs = {'id':race.id})
+ return HttpResponseRedirect(url)
+
+ recordid = records[0].id
+
+ result, comments, errors, jobid = add_workout_indoorrace(
+ [w],race,r,recordid=recordid
+ )
+ for c in comments:
+ messages.info(request,c)
+ for er in errors:
+ messages.error(request,er)
+
+ if result:
+ otherrecords = IndoorVirtualRaceResult.objects.filter(
+ race = race
+ ).exclude(userid=r.id)
+ for otherrecord in otherrecords:
+ try:
+ otheruser = Rower.objects.get(id=otherrecord.userid)
+ othername = otheruser.user.first_name+' '+otheruser.user.last_name
+ registeredname = r.user.first_name+' '+r.user.last_name
+ if otherrecord.emailnotifications:
+ job = myqueue(
+ queue,
+ handle_sendemail_racesubmission,
+ otheruser.user.email, othername,
+ registeredname,
+ race.name,
+ race.id
+ )
+ except Rower.DoesNotExist:
+ pass
+
+ url = reverse('virtualevent_view',kwargs = {'id':race.id})
+ return HttpResponseRedirect(url)
+
url = reverse(
'workout_edit_view',
kwargs={'id':encoder.encode_hex(id)}
@@ -673,6 +746,7 @@ def addmanual_view(request):
else:
return render(request,'manualadd.html',
{'form':form,
+ 'iform':iform,
'metricsform':metricsform,
'breadcrumbs':breadcrumbs,
'active':'nav-workouts',
@@ -688,10 +762,12 @@ def addmanual_view(request):
}
form = WorkoutForm(initial=initial)
+ iform = ImageForm()
metricsform = MetricsForm()
return render(request,'manualadd.html',
{'form':form,
+ 'iform':iform,
'metricsform':metricsform,
'breadcrumbs':breadcrumbs,
'active':'nav-workouts',
|