From 5952e85694c0ed5ff8be3d210cf0efe91134a938 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 26 May 2020 22:21:04 +0200 Subject: [PATCH] registration form (not processing yet) --- rowers/models.py | 27 +++++++++++++++++++--- rowers/templates/virtualeventregister.html | 9 +++++++- rowers/views/racesviews.py | 22 +++++++++++++++--- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index c84f98a9..25a2ac34 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2939,6 +2939,8 @@ class VirtualRaceResult(models.Model): adaptiveclass = models.CharField(default="None",max_length=50, choices=mytypes.adaptivetypes, verbose_name="Adaptive Class") + skillclass = models.CharField(default="Open",max_length=50, + verbose_name="Skill Class") race = models.ForeignKey(VirtualRace,on_delete=models.CASCADE) duration = models.TimeField(default=datetime.time(1,0)) distance = models.IntegerField(default=0) @@ -2963,6 +2965,8 @@ class VirtualRaceResult(models.Model): startsecond = models.FloatField(default=0) endsecond = models.FloatField(default=0) + entrycategory = models.ForeignKey(CourseStandard,null=True,on_delete=models.SET_NULL, + verbose_name='Field') def __str__(self): rr = Rower.objects.get(id=self.userid) @@ -3003,6 +3007,8 @@ class IndoorVirtualRaceResult(models.Model): adaptiveclass = models.CharField(default="None",max_length=50, choices=mytypes.adaptivetypes, verbose_name="Adaptive Class") + skillclass = models.CharField(default="Open",max_length=50, + verbose_name="Skill Class") race = models.ForeignKey(VirtualRace,on_delete=models.CASCADE) duration = models.TimeField(default=datetime.time(1,0)) distance = models.IntegerField(default=0) @@ -3020,6 +3026,8 @@ class IndoorVirtualRaceResult(models.Model): age = models.IntegerField(null=True) emailnotifications = models.BooleanField(default=True, verbose_name = 'Receive challenge notifications by email') + entrycategory = models.ForeignKey(CourseStandard,null=True,on_delete=models.SET_NULL, + verbose_name='Category') def __str__(self): rr = Rower.objects.get(id=self.userid) @@ -3055,22 +3063,29 @@ class CourseTestResult(models.Model): class IndoorVirtualRaceResultForm(ModelForm): class Meta: model = IndoorVirtualRaceResult - fields = ['teamname','weightcategory','boatclass','age','adaptiveclass'] + fields = ['teamname','weightcategory','boatclass','age','adaptiveclass', + 'entrycategory'] def __init__(self, *args, **kwargs): + categories = kwargs.pop('categories') super(IndoorVirtualRaceResultForm, self).__init__(*args, **kwargs) - + if categories is not None: + self.fields['entrycategory'].queryset = categories + self.fields['entrycategory'].empty_label = None + else: + self.fields.pop('entrycategory') class VirtualRaceResultForm(ModelForm): class Meta: model = VirtualRaceResult fields = ['teamname','weightcategory','boatclass','boattype', - 'age','adaptiveclass'] + 'age','adaptiveclass','entrycategory'] def __init__(self, *args, **kwargs): boattypes = kwargs.pop('boattypes',None) + categories = kwargs.pop('categories',None) super(VirtualRaceResultForm, self).__init__(*args, **kwargs) if boattypes: @@ -3080,6 +3095,12 @@ class VirtualRaceResultForm(ModelForm): required=False, label='Mixed Gender') + if categories is not None: + self.fields['entrycategory'].queryset = categories + self.fields['entrycategory'].empty_label = None + else: + self.fields.pop('entrycategory') + from rowers.metrics import rowingmetrics strokedatafields = { diff --git a/rowers/templates/virtualeventregister.html b/rowers/templates/virtualeventregister.html index 5ed6c79a..4752256c 100644 --- a/rowers/templates/virtualeventregister.html +++ b/rowers/templates/virtualeventregister.html @@ -21,7 +21,7 @@ -

If you are participating in a single, we will take the age and weight @@ -35,6 +35,13 @@ as a Male crew. Check the "Mixed gender" check box to register as a mixed gender crew (except for 1x where this check box does nothing).

+ {% if race.coursestandards %} +

This race uses standard times and limits the race fields to those where + standard times exist. The "Field" form choice will overrule other selections you + make in the form (boat type, weight, etc) and your entry will be rejected + if the age and gender doesn't match. +

+ {% endif %}
{{ form.as_table }} diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index 95bf3eb0..db9aa416 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -1529,7 +1529,13 @@ def virtualevent_addboat_view(request,id=0): 'adaptiveclass': r.adaptiveclass, } - form = VirtualRaceResultForm(initial=initial) + categories = None + if race.coursestandards is not None: + categories = CourseStandard.objects.filter( + standardcollection=race.coursestandards).order_by("name") + + + form = VirtualRaceResultForm(initial=initial,categories=categories) breadcrumbs = [ { @@ -1684,7 +1690,12 @@ def virtualevent_register_view(request,id=0): 'adaptiveclass': r.adaptiveclass, } - form = VirtualRaceResultForm(initial=initial) + categories = None + if race.coursestandards is not None: + categories = CourseStandard.objects.filter( + standardcollection=race.coursestandards).order_by("name") + + form = VirtualRaceResultForm(initial=initial,categories=categories) breadcrumbs = [ { @@ -1875,7 +1886,12 @@ def indoorvirtualevent_register_view(request,id=0): 'adaptiveclass': r.adaptiveclass, } - form = IndoorVirtualRaceResultForm(initial=initial) + categories = None + if race.coursestandards is not None: + categories = CourseStandard.objects.filter( + standardcollection=race.coursestandards).order_by("name") + + form = IndoorVirtualRaceResultForm(initial=initial,categories=categories) breadcrumbs = [ {