From 2c979bf27b5a21199a68e60a06de61dea8a5be11 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 16 Apr 2018 09:49:38 +0200 Subject: [PATCH] added virtual event link --- rowers/forms.py | 18 +++++++++- rowers/plannedsessions.py | 7 ++++ rowers/templates/virtualevent.html | 55 ++++++++++++++++++++++++++++++ rowers/urls.py | 1 + rowers/views.py | 55 ++++++++++++++++++++++++++---- 5 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 rowers/templates/virtualevent.html 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)