diff --git a/rowers/models.py b/rowers/models.py index ac3fe85e..0424cbe0 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -427,89 +427,115 @@ class RowerPowerForm(ModelForm): # 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') + + powerzones = ['UT3','UT2','UT1','AT','TR','AN'] + ut3name = forms.CharField(initial=powerzones[0]) + ut2name = forms.CharField(initial=powerzones[1]) + ut1name = forms.CharField(initial=powerzones[2]) + atname = forms.CharField(initial=powerzones[3]) + trname = forms.CharField(initial=powerzones[4]) + anname = forms.CharField(initial=powerzones[5]) + def __init__(self, *args,**kwargs): + super(RowerPowerZonesForm, self).__init__(*args, **kwargs) + + if 'instance' in kwargs: + powerzones = kwargs['instance'].powerzones + else: + powerzones = ['UT3','UT2','UT1','AT','TR','AN'] + + self.fields['ut3name'].initial = powerzones[0] + self.fields['ut2name'].initial = powerzones[1] + self.fields['ut1name'].initial = powerzones[2] + self.fields['atname'].initial = powerzones[3] + self.fields['trname'].initial = powerzones[4] + self.fields['anname'].initial = powerzones[5] + 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']) + def clean(self): + cleaned_data = super(RowerPowerZonesForm, self).clean() + try: + pw_ut2 = cleaned_data['pw_ut2'] + except: + pw_ut2 = int(self.data['pw_ut2']) + try: + pw_ut1 = cleaned_data['pw_ut1'] + except: + pw_ut1 = int(self.data['pw_ut1']) + try: + pw_at = cleaned_data['pw_at'] + except: + pw_at = int(self.data['pw_at']) + try: + pw_tr = cleaned_data['pw_tr'] + except: + pw_tr = int(self.data['pw_tr']) + try: + pw_an = 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' + try: + ut3name = cleaned_data['ut3name'] + except: + ut2name = 'UT3' + cleaned_data['ut3name'] = 'UT3' + try: + ut2name = cleaned_data['ut2name'] + except: + ut2name = 'UT2' + cleaned_data['ut2name'] = 'UT2' + try: + ut1name = cleaned_data['ut1name'] + except: + ut1name = 'UT1' + cleaned_data['ut1name'] = 'UT1' + try: + atname = cleaned_data['atname'] + except: + atname = 'AT' + cleaned_data['atname'] = 'AT' + try: + trname = cleaned_data['trname'] + except: + trname = 'TR' + cleaned_data['ut1name'] = 'TR' + try: + anname = cleaned_data['anname'] + except: + anname = 'AN' + 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) + + 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) + + return cleaned_data # Form to set rower's Heart Rate zones, including test routines # to enable consistency diff --git a/rowers/templates/rower_form.html b/rowers/templates/rower_form.html index bec8fde4..04e8c616 100644 --- a/rowers/templates/rower_form.html +++ b/rowers/templates/rower_form.html @@ -27,20 +27,42 @@