added race action to race list
This commit is contained in:
@@ -1136,7 +1136,7 @@ class PlannedSessionForm(ModelForm):
|
|||||||
class VirtualRaceForm(ModelForm):
|
class VirtualRaceForm(ModelForm):
|
||||||
course = forms.ModelChoiceField(queryset = GeoCourse.objects, empty_label=None)
|
course = forms.ModelChoiceField(queryset = GeoCourse.objects, empty_label=None)
|
||||||
registration_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=False)
|
registration_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=False)
|
||||||
evaluation_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=False)
|
evaluation_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VirtualRace
|
model = VirtualRace
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
{% load rowerfilters %}
|
||||||
<p>
|
<p>
|
||||||
<table width="100%" class="listtable shortpadded">
|
<table width="100%" class="listtable shortpadded">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -6,6 +7,7 @@
|
|||||||
<th>Event</th>
|
<th>Event</th>
|
||||||
<th>Country</th>
|
<th>Country</th>
|
||||||
<th>Course</th>
|
<th>Course</th>
|
||||||
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -15,6 +17,19 @@
|
|||||||
<td><a href="/rowers/virtualevent/{{ race.id }}">{{ race.name }}</a></td>
|
<td><a href="/rowers/virtualevent/{{ race.id }}">{{ race.name }}</a></td>
|
||||||
<td>{{ race.course.country }}</td>
|
<td>{{ race.course.country }}</td>
|
||||||
<td>{{ race.course.name }}</td>
|
<td>{{ race.course.name }}</td>
|
||||||
|
<td>
|
||||||
|
{% if rower %}
|
||||||
|
{% if race|can_register:rower %}
|
||||||
|
<a class="white dot" href="/rowers/virtualevent/{{ race.id }}"> </a>
|
||||||
|
{% elif race|can_submit:rower %}
|
||||||
|
<a class="orange dot" href="/rowers/virtualevent/{{ race.id }}"> </a>
|
||||||
|
{% elif race|race_complete:rower %}
|
||||||
|
<a class="green dot" href="/rowers/virtualevent/{{ race.id }}"> </a>
|
||||||
|
{% else %}
|
||||||
|
<a class="red dot" href="/rowers/virtualevent/{{ race.id }}"> </a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ import json
|
|||||||
import datetime
|
import datetime
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
from rowers.utils import calculate_age
|
from rowers.utils import calculate_age
|
||||||
|
from rowers.plannedsessions import (
|
||||||
|
race_can_register, race_can_submit,race_rower_status
|
||||||
|
)
|
||||||
|
|
||||||
def strfdelta(tdelta):
|
def strfdelta(tdelta):
|
||||||
minutes,seconds = divmod(tdelta.seconds,60)
|
minutes,seconds = divmod(tdelta.seconds,60)
|
||||||
@@ -244,3 +247,18 @@ def date_dif(the_date):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def can_register(race,r):
|
||||||
|
return race_can_register(r,race)
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def can_submit(race,r):
|
||||||
|
return race_can_submit(r,race)
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def race_complete(race,r):
|
||||||
|
is_complete,has_registered = race_rower_status(r,race)
|
||||||
|
if is_complete == 'completed':
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|||||||
@@ -13328,6 +13328,8 @@ def virtualevents_view(request):
|
|||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous():
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
|
else:
|
||||||
|
r = None
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
# process form
|
# process form
|
||||||
@@ -13342,19 +13344,29 @@ def virtualevents_view(request):
|
|||||||
countries = [country]
|
countries = [country]
|
||||||
|
|
||||||
if regattatype == 'upcoming':
|
if regattatype == 'upcoming':
|
||||||
races = VirtualRace.objects.filter(
|
races1 = VirtualRace.objects.filter(
|
||||||
startdate__gte=datetime.date.today(),
|
startdate__gte=datetime.date.today(),
|
||||||
country__in=countries
|
country__in=countries
|
||||||
).order_by("startdate","start_time")
|
)
|
||||||
|
races2 = VirtualRace.objects.filter(
|
||||||
|
startdate__lte=datetime.date.today(),
|
||||||
|
evaluation_closure__gte=timezone.now(),
|
||||||
|
country__in=countries
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
races = (races1 | races2).order_by("startdate","start_time")
|
||||||
|
|
||||||
|
|
||||||
elif regattatype == 'previous':
|
elif regattatype == 'previous':
|
||||||
races = VirtualRace.objects.filter(
|
races = VirtualRace.objects.filter(
|
||||||
enddate__lt=datetime.date.today(),
|
evaluation_closure__lt=timezone.now(),
|
||||||
country__in=countries
|
country__in=countries
|
||||||
).order_by("startdate","start_time")
|
).order_by("startdate","start_time")
|
||||||
elif regattatype == 'ongoing':
|
elif regattatype == 'ongoing':
|
||||||
races = VirtualRace.objects.filter(
|
races = VirtualRace.objects.filter(
|
||||||
startdate__lte=datetime.date.today(),
|
startdate__lte=datetime.date.today(),
|
||||||
evaluation_closure__gte=datetime.date.today(),
|
evaluation_closure__gte=timezone.now(),
|
||||||
country__in=countries
|
country__in=countries
|
||||||
).order_by("startdate","start_time")
|
).order_by("startdate","start_time")
|
||||||
elif regattatype == 'my':
|
elif regattatype == 'my':
|
||||||
@@ -13374,11 +13386,13 @@ def virtualevents_view(request):
|
|||||||
if is_ajax:
|
if is_ajax:
|
||||||
return render(request,'racelist.html',
|
return render(request,'racelist.html',
|
||||||
{ 'races':races,
|
{ 'races':races,
|
||||||
|
'rower':r,
|
||||||
})
|
})
|
||||||
|
|
||||||
return render(request,'virtualevents.html',
|
return render(request,'virtualevents.html',
|
||||||
{ 'races':races,
|
{ 'races':races,
|
||||||
'form':form,
|
'form':form,
|
||||||
|
'rower':r,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user