diff --git a/rowers/models.py b/rowers/models.py index 148c7055..14b5fc86 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1136,7 +1136,7 @@ class PlannedSessionForm(ModelForm): class VirtualRaceForm(ModelForm): course = forms.ModelChoiceField(queryset = GeoCourse.objects, empty_label=None) 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: model = VirtualRace diff --git a/rowers/templates/racelist.html b/rowers/templates/racelist.html index dfe8ae95..e2063797 100644 --- a/rowers/templates/racelist.html +++ b/rowers/templates/racelist.html @@ -1,3 +1,4 @@ +{% load rowerfilters %}

@@ -6,6 +7,7 @@ + @@ -15,6 +17,19 @@ + {% endfor %} diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index 2ded5642..b7a4a7df 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -6,6 +6,9 @@ import json import datetime register = template.Library() from rowers.utils import calculate_age +from rowers.plannedsessions import ( + race_can_register, race_can_submit,race_rower_status + ) def strfdelta(tdelta): minutes,seconds = divmod(tdelta.seconds,60) @@ -244,3 +247,18 @@ def date_dif(the_date): 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 diff --git a/rowers/views.py b/rowers/views.py index 446c1caf..c1bb84d1 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -13328,6 +13328,8 @@ def virtualevents_view(request): if not request.user.is_anonymous(): r = getrower(request.user) + else: + r = None if request.method == 'POST': # process form @@ -13342,19 +13344,29 @@ def virtualevents_view(request): countries = [country] if regattatype == 'upcoming': - races = VirtualRace.objects.filter( + races1 = VirtualRace.objects.filter( startdate__gte=datetime.date.today(), 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': races = VirtualRace.objects.filter( - enddate__lt=datetime.date.today(), + evaluation_closure__lt=timezone.now(), 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(), + evaluation_closure__gte=timezone.now(), country__in=countries ).order_by("startdate","start_time") elif regattatype == 'my': @@ -13374,11 +13386,13 @@ def virtualevents_view(request): if is_ajax: return render(request,'racelist.html', { 'races':races, + 'rower':r, }) return render(request,'virtualevents.html', { 'races':races, 'form':form, + 'rower':r, } )
Event Country CourseAction
{{ race.name }} {{ race.course.country }} {{ race.course.name }} + {% if rower %} + {% if race|can_register:rower %} +   + {% elif race|can_submit:rower %} +   + {% elif race|race_complete:rower %} +   + {% else %} +   + {% endif %} + {% endif %} +