diff --git a/rowers/forms.py b/rowers/forms.py
index 98d88124..1e7a7032 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -724,8 +724,24 @@ def get_countries():
countries = tuple([(c[0],c[0]) for c in countries])
countries = countries+(('All','All'),)
return countries
-
+
+
+
class VirtualRaceSelectForm(forms.Form):
+ regattatypechoices = (
+ ('upcoming','Upcoming Races'),
+ ('ongoing','Ongoing Races'),
+ ('previous','Previous Races'),
+ ('my','My Races'),
+ ('all','All Races'),
+ )
+
+ regattatype = forms.ChoiceField(
+ label='Type',
+ choices = regattatypechoices,
+ initial = 'upcoming',
+ )
+
country = forms.ChoiceField(
label='Country',
choices = get_countries()
diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py
index 76b4b8ec..998e846e 100644
--- a/rowers/plannedsessions.py
+++ b/rowers/plannedsessions.py
@@ -425,6 +425,13 @@ def get_sessions(r,startdate=date.today(),
return sps
+def get_my_session_ids(r):
+ sps = PlannedSession.objects.filter(
+ rower__in=[r]
+ ).order_by("preferreddate","startdate","enddate")
+
+ return [ps.id for ps in sps]
+
def get_workouts_session(r,ps):
ws = Workout.objects.filter(user=r,plannedsession=ps)
diff --git a/rowers/templates/virtualevent.html b/rowers/templates/virtualevent.html
new file mode 100644
index 00000000..2f0ccb5f
--- /dev/null
+++ b/rowers/templates/virtualevent.html
@@ -0,0 +1,55 @@
+{% extends "base.html" %}
+{% load staticfiles %}
+{% load rowerfilters %}
+
+{% block title %}New Virtual Race{% endblock %}
+
+{% block content %}
+
+
+
+
{{ race.name }}
+
+
+
+
+
+
+
Race Information
+
+
+
+
+ | Course | {{ race.course }} |
+
+
+ | Date | {{ race.startdate }} |
+
+
+ | Race Window | {{ race.startdate }} {{ race.start_time }} to {{ race.enddate }} {{ race.end_time }} |
+
+
+ | Results Submission Deadline | {{ race.evaluation_closure }} |
+
+
+ | Organizer | {{ race.manager.first_name }} {{ race.manager.last_name }} |
+
+
+ | Contact Email | {{ race.contact_email }} |
+
+
+ | Contact Phone | {{ race.contact_phone }} |
+
+
+
+
+
+
+
Course
+ {{ coursediv|safe }}
+
+ {{ coursescript|safe }}
+
+
+
+{% endblock %}
diff --git a/rowers/urls.py b/rowers/urls.py
index 252e4af5..643088b9 100644
--- a/rowers/urls.py
+++ b/rowers/urls.py
@@ -145,6 +145,7 @@ urlpatterns = [
url(r'^list-workouts/(?P\w+.*)/(?P\w+.*)$',views.workouts_view),
url(r'^virtualevents$',views.virtualevents_view),
url(r'^virtualevent/create$',views.virtualevent_create_view),
+ url(r'^virtualevent/(?P\d+)$',views.virtualevent_view),
url(r'^list-workouts/$',views.workouts_view),
url(r'^list-courses/$',views.courses_view),
url(r'^courses/upload$',views.course_upload_view),
diff --git a/rowers/views.py b/rowers/views.py
index 64062076..7713bf9f 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -13322,7 +13322,9 @@ def virtualevents_view(request):
# default races
races = VirtualRace.objects.filter(
startdate__gte=datetime.date.today()
- )
+ ).order_by("startdate","start_time")
+
+ r = getrower(request.user)
if request.method == 'POST':
# process form
@@ -13330,15 +13332,38 @@ def virtualevents_view(request):
if form.is_valid():
cd = form.cleaned_data
country = cd['country']
+ regattatype = cd['regattatype']
if country == 'All':
countries = VirtualRace.objects.order_by('country').values_list('country').distinct()
else:
countries = [country]
-
- races = VirtualRace.objects.filter(
- startdate__gte=datetime.date.today(),
- country__in=countries
- )
+
+ if regattatype == 'upcoming':
+ races = VirtualRace.objects.filter(
+ startdate__gte=datetime.date.today(),
+ country__in=countries
+ ).order_by("startdate","start_time")
+ elif regattatype == 'previous':
+ races = VirtualRace.objects.filter(
+ enddate__lt=datetime.date.today(),
+ country__in=countries
+ ).order_by("startdate","start_time")
+ elif regattatype == 'ongoing':
+ races = VirtualRace.objects.filter(
+ startdate__lte=datetime.date.today(),
+ evaluation_closure__gte=datetime.date.today(),
+ country__in=countries
+ ).order_by("startdate","start_time")
+ elif regattatype == 'my':
+ mysessions = get_my_session_ids(r)
+ races = VirtualRace.objects.filter(
+ id__in=mysessions,
+ country__in=countries
+ ).order_by("startdate","start_time")
+ elif regattatype == 'all':
+ races = VirtualRace.objects.filter(
+ country__in=countries
+ ).order_by("startdate","start_time")
else:
form = VirtualRaceSelectForm()
@@ -13349,6 +13374,24 @@ def virtualevents_view(request):
}
)
+def virtualevent_view(request,id=0):
+ r = getrower(request.user)
+
+ try:
+ race = VirtualRace.objects.get(id=id)
+ except VirtualRace.DoesNotExist:
+ raise Http404("Virtual Race does not exist")
+
+ script,div = course_map(race.course)
+
+ return render(request,'virtualevent.html',
+ {
+ 'coursescript':script,
+ 'coursediv':div,
+ 'race':race,
+ 'rower':r
+ })
+
def virtualevent_create_view(request):
r = getrower(request.user)