+ If you don't have a data file, enter the results
+ manually. If you have a photo of the monitor with the
+ result, it is recommended to add this to the workout.
+
diff --git a/rowers/templates/racelist.html b/rowers/templates/racelist.html
index a0f96927..02e999a0 100644
--- a/rowers/templates/racelist.html
+++ b/rowers/templates/racelist.html
@@ -37,10 +37,10 @@
{% if rower %}
{% if race|can_register:rower %}
- {% elif race|can_submit:rower %}
-
{% elif race|race_complete:rower %}
+ {% elif race|can_submit:rower %}
+
{% elif race|future_registered:rower %}
{% elif race|past_not_registered:rower %}
diff --git a/rowers/views.py b/rowers/views.py
index eaac8cbb..4d1df1a8 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -11462,7 +11462,7 @@ def workout_upload_view(request,
response = {}
if request.method == 'POST':
form = DocumentsForm(request.POST,request.FILES)
- optionsform = UploadOptionsForm(request.POST)
+ optionsform = UploadOptionsForm(request.POST,request=request)
if form.is_valid():
# f = request.FILES['file']
@@ -11503,6 +11503,11 @@ def workout_upload_view(request,
makeprivate = optionsform.cleaned_data['makeprivate']
landingpage = optionsform.cleaned_data['landingpage']
+ try:
+ race = optionsform.cleaned_data['submitrace']
+ except KeyError:
+ race = None
+
uploadoptions = {
'makeprivate':makeprivate,
'make_plot':make_plot,
@@ -11688,6 +11693,28 @@ def workout_upload_view(request,
else:
messages.error(request,message)
+ if race and race_can_submit(r,race):
+ records = IndoorVirtualRaceResult.objects.filter(
+ race=race,
+ userid=r.id
+ )
+
+ if records:
+
+ result,comments,errors,jobid = add_workout_indoorrace(
+ [w],race,r,recordid=records[0].id
+ )
+
+ if result:
+ messages.info(
+ request,
+ "We have submitted your workout to the race")
+
+ for c in comments:
+ messages.info(request,c)
+ for er in errors:
+ messages.error(request,er)
+
if landingpage != 'workout_upload_view':
url = reverse(landingpage,
@@ -11736,7 +11763,8 @@ def workout_upload_view(request,
uploadoptions['upload_to_MapMyFitness'] = True
form = DocumentsForm(initial=docformoptions)
- optionsform = UploadOptionsForm(initial=uploadoptions)
+ optionsform = UploadOptionsForm(initial=uploadoptions,
+ request=request)
return render(request, 'document_form.html',
{'form':form,
'active':'nav-workouts',
@@ -16122,11 +16150,32 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
},
]
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
return render(request,"disqualification_view.html",
{'workout':workout,
'active':'nav-racing',
'graphs':g,
+ 'buttons':buttons,
'interactiveplot':script,
'the_div':div,
'mapscript':mapscript,
@@ -16464,10 +16513,31 @@ def virtualevent_addboat_view(request,id=0):
]
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
return render(request,'virtualeventregister.html',
{
'form':form,
+ 'buttons':buttons,
'breadcrumbs':breadcrumbs,
'race':race,
'userid':r.user.id,
@@ -16593,9 +16663,32 @@ def virtualevent_register_view(request,id=0):
'name': 'Register'
}
]
+
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
+
return render(request,'virtualeventregister.html',
{
'form':form,
+ 'buttons':buttons,
'breadcrumbs':breadcrumbs,
'race':race,
'userid':r.user.id,
@@ -16717,9 +16810,31 @@ def indoorvirtualevent_register_view(request,id=0):
}
]
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
+
return render(request,'virtualeventregister.html',
{
'form':form,
+ 'buttons':buttons,
'race':race,
'breadcrumbs':breadcrumbs,
'userid':r.user.id,
@@ -17067,10 +17182,32 @@ def virtualevent_edit_view(request,id=0):
}
]
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
+
return render(request,'virtualeventedit.html',
{
'form':racecreateform,
'breadcrumbs':breadcrumbs,
+ 'buttons':buttons,
'rower':r,
'race':race,
@@ -17143,9 +17280,33 @@ def indoorvirtualevent_edit_view(request,id=0):
'name': 'Edit'
}
]
+
+ buttons = []
+
+ if not request.user.is_anonymous():
+ if race_can_register(r,race):
+ buttons += ['registerbutton']
+
+ if race_can_adddiscipline(r,race):
+ buttons += ['adddisciplinebutton']
+
+ if race_can_submit(r,race):
+ buttons += ['submitbutton']
+
+ if race_can_resubmit(r,race):
+ buttons += ['resubmitbutton']
+
+ if race_can_withdraw(r,race):
+ buttons += ['withdrawbutton']
+
+ if race_can_edit(r,race):
+ buttons += ['editbutton']
+
+
return render(request,'virtualeventedit.html',
{
'form':racecreateform,
+ 'buttons':buttons,
'breadcrumbs':breadcrumbs,
'rower':r,
'race':race,
From 6d6d269ce9254d99730cc305049955cfdfba9802 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Sun, 2 Dec 2018 20:37:02 +0100
Subject: [PATCH 5/7] emails with site url
---
rowers/tasks.py | 3 ++
rowers/templates/disqualificationemail.html | 3 +-
rowers/templates/raceregisteredemail.html | 8 +++-
rowers/templates/racesubmissionemail.html | 8 +++-
rowers/urls.py | 4 ++
rowers/views.py | 42 +++++++++++++++++++++
6 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/rowers/tasks.py b/rowers/tasks.py
index c319b1e4..d1f6855e 100644
--- a/rowers/tasks.py
+++ b/rowers/tasks.py
@@ -758,6 +758,7 @@ def handle_sendemail_raceregistration(
d = {
'username':username,
'registeredname':registeredname,
+ 'siteurl':siteurl,
'racename':racename,
'raceid':raceid,
}
@@ -786,6 +787,7 @@ def handle_sendemail_racesubmission(
d = {
'username':username,
+ 'siteurl':siteurl,
'registeredname':registeredname,
'racename':racename,
'raceid':raceid,
@@ -816,6 +818,7 @@ def handle_send_disqualification_email(
d = {
'username':username,
'reason':reason,
+ 'siteurl':siteurl,
'message': strip_tags(message),
'racename':racename,
}
diff --git a/rowers/templates/disqualificationemail.html b/rowers/templates/disqualificationemail.html
index 1c7dca91..c72af9fc 100644
--- a/rowers/templates/disqualificationemail.html
+++ b/rowers/templates/disqualificationemail.html
@@ -4,7 +4,8 @@
Unfortunately, the result that you have submitted
- for the virtual race {{ racename }}
+ for the virtual race
+ {{ racename }}
has been rejected by the race organizer.
+ You are receiving this email because you are on the start list for this race.
+ If you do not wish to receive these notifications, you can switch them off
+ throught the link above.
+ You are receiving this email because you are on the start list for this race.
+ If you do not wish to receive these notifications, you can switch them off
+ throught the link above.
diff --git a/rowers/urls.py b/rowers/urls.py
index 4948b2b4..76ffa360 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -144,6 +144,10 @@ urlpatterns = [
url(r'^virtualevents$',views.virtualevents_view),
url(r'^virtualevent/create$',views.virtualevent_create_view),
url(r'^virtualevent/createindoor$',views.indoorvirtualevent_create_view),
+ url(r'^raceregistration/togglenotification/(?P\d+)/$',
+ views.virtualevent_toggle_email_view),
+ url(r'^indoorraceregistration/togglenotification/(?P\d+)/$',
+ views.indoorvirtualevent_toggle_email_view),
url(r'^virtualevent/(?P\d+)$',views.virtualevent_view),
url(r'^virtualevent/(?P\d+)/edit$',views.virtualevent_edit_view),
url(r'^virtualevent/(?P\d+)/editindoor$',views.indoorvirtualevent_edit_view),
diff --git a/rowers/views.py b/rowers/views.py
index 4d1df1a8..8c089562 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -16695,6 +16695,48 @@ def virtualevent_register_view(request,id=0):
})
+@login_required()
+def virtualevent_toggle_email_view(request,id=0):
+ r = getrower(request.user)
+ race = VirtualRace.objects.get(id=id)
+ records = VirtualRaceResult.objects.filter(userid=r.id,race=race)
+
+ if True in [record.emailnotifications for record in records]:
+ newsetting = False
+ else:
+ newsetting = True
+
+ for record in records:
+ record.emailnotifications = newsetting
+ record.save()
+
+ url = reverse(virtualevent_view,
+ kwargs={'id':record.race.id})
+
+ return HttpResponseRedirect(url)
+
+@login_required()
+def indoorvirtualevent_toggle_email_view(request,id=0):
+ r = getrower(request.user)
+ race = VirtualRace.objects.get(id=id)
+
+ records = IndoorVirtualRaceResult.objects.filter(userid=r.id,
+ race=race)
+
+ if True in [record.emailnotifications for record in records]:
+ newsetting = False
+ else:
+ newsetting = True
+
+ for record in records:
+ record.emailnotifications = newsetting
+ record.save()
+
+ url = reverse(virtualevent_view,
+ kwargs={'id':record.race.id})
+
+ return HttpResponseRedirect(url)
+
@login_required()
def indoorvirtualevent_register_view(request,id=0):
r = getrower(request.user)
From 8b2ea062defc8b63043f5dfb28112c21a487ad19 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Sun, 2 Dec 2018 21:09:15 +0100
Subject: [PATCH 6/7] toggle notifications
---
rowers/templates/virtualevent.html | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/rowers/templates/virtualevent.html b/rowers/templates/virtualevent.html
index 965d713e..430aa7e7 100644
--- a/rowers/templates/virtualevent.html
+++ b/rowers/templates/virtualevent.html
@@ -361,6 +361,31 @@ data-text="@rowsandall #rowingdata Participate in Indoor Rowing virtual race '{{
{% endif %}
+ {% for record in records %}
+ {% if record.userid == request.user.rower.id %}
+ {% if race.sessiontype == 'race' %}
+ {% if record.emailnotifications %}
+
+ Unsubscribe from race notifications by email
+
+ {% else %}
+
+ Subscribe to race notifications by email
+
+ {% endif %}
+ {% else %}
+ {% if record.emailnotifications %}
+
+ Unsubscribe from race notifications by email
+
+ {% else %}
+
+ Subscribe to race notifications by email
+
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}