diff --git a/rowers/models.py b/rowers/models.py index 86e7dea6..ac3fe85e 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -424,6 +424,93 @@ class RowerPowerForm(ModelForm): model = Rower fields = ['ftp'] +# Form to set rower's Power zones, including test routines +# to enable consistency +class RowerPowerZonesForm(ModelForm): + ut2name = forms.CharField(initial='UT2') + ut1name = forms.CharField(initial='UT1') + atname = forms.CharField(initial='AT') + trname = forms.CharField(initial='TR') + anname = forms.CharField(initial='AN') + + class Meta: + model = Rower + fields = ['pw_ut2','pw_ut1','pw_at','pw_tr','pw_an'] + + def clean(self): + try: + pw_ut2 = self.cleaned_data['pw_ut2'] + except: + pw_ut2 = int(self.data['pw_ut2']) + try: + pw_ut1 = self.cleaned_data['pw_ut1'] + except: + pw_ut1 = int(self.data['pw_ut1']) + try: + pw_at = self.cleaned_data['pw_at'] + except: + pw_at = int(self.data['pw_at']) + try: + pw_tr = self.cleaned_data['pw_tr'] + except: + pw_tr = int(self.data['pw_tr']) + try: + pw_an = self.cleaned_data['pw_an'] + except: + pw_an = int(self.data['pw_an']) + + try: + ut2name = self.cleaned_data['ut2name'] + except: + ut2name = 'UT2' + self.cleaned_data['ut2name'] = 'UT2' + try: + ut1name = self.cleaned_data['ut1name'] + except: + ut1name = 'UT1' + self.cleaned_data['ut1name'] = 'UT1' + try: + atname = self.cleaned_data['atname'] + except: + atname = 'AT' + self.cleaned_data['atname'] = 'AT' + try: + trname = self.cleaned_data['trname'] + except: + trname = 'TR' + self.cleaned_data['ut1name'] = 'TR' + try: + anname = self.cleaned_data['anname'] + except: + anname = 'AN' + self.cleaned_data['ut1name'] = 'AN' + + + if pw_ut1 <= pw_ut2: + e = "{ut1name} should be higher than {ut2name}".format( + ut1name = ut1name, + ut2name= ut2name, + ) + raise forms.ValidationError(e) + if pw_at <= pw_ut1: + e = "{atname} should be higher than {ut1name}".format( + atname = atname, + ut1name= ut1name, + ) + raise forms.ValidationError(e) + if pw_tr <= pw_at: + e = "{trname} should be higher than {atname}".format( + atname = atname, + trname= trname, + ) + raise forms.ValidationError(e) + if pw_an <= pw_tr: + e = "{anname} should be higher than {trname}".format( + anname = anname, + trname= trname, + ) + raise forms.ValidationError(e) + # Form to set rower's Heart Rate zones, including test routines # to enable consistency class RowerForm(ModelForm): diff --git a/rowers/templates/rower_form.html b/rowers/templates/rower_form.html index 7710ccb7..bec8fde4 100644 --- a/rowers/templates/rower_form.html +++ b/rowers/templates/rower_form.html @@ -24,29 +24,35 @@
| Band | -Value | -
|---|---|
| UT2 Power | {{ rower.pw_ut2 }} Watt | -
| UT1 Power | {{ rower.pw_ut1 }} Watt | -
| AT Power | {{ rower.pw_at }} Watt | -
| TR Power | {{ rower.pw_tr }} Watt | -
| AN Power | {{ rower.pw_an }} Watt | -
Use this form to quickly change your zones based on the power of a + recent + full out 60 minutes effort. It will update all zones defined above.