Source code for kata.forms

from django import forms

from registration.models import EventLink
from .models import KataMatch


[docs]class KataMatchForm(forms.ModelForm): class Meta: model = KataMatch fields = ['score1', 'score2', 'score3', 'score4', 'score5']
[docs] def __init__(self, **kwargs): super().__init__(**kwargs) self.fields['score1'].widget.attrs.update({'autofocus': 'autofocus'})
[docs] def clean(self): cleaned_data = super().clean() if self.instance.round.locked: raise forms.ValidationError("Round is locked.") # Determine match.done from which button was clicked if 'save' in self.data: pass elif 'clear' in self.data: for x in ('score'+str(i) for i in range(1,5+1)): cleaned_data[x] = None else: raise forms.ValidationError('Unexpected submit button.', code='done_missing') # Check that they filled all or none of the scores scores = [cleaned_data['score'+str(i)] if 'score'+str(i) in cleaned_data else -1 for i in range(1,5+1)] if -1 in scores: # one of the scores didn't validate return elif scores.count(None) not in (0, 5): raise forms.ValidationError("Set either all or none of the scores.") return cleaned_data
[docs]class KataBracketAddPersonForm(forms.ModelForm): class Meta: model = EventLink fields = ['manual_name'] existing_eventlink = forms.ModelChoiceField(label="Registered late arrival", queryset=EventLink.objects.none(), required=False)
[docs] def __init__(self, division=None, **kwargs): if division is None: raise ValueError('Division is required.') if 'instance' in kwargs: instance = kwargs['instance'] else: instance = EventLink() instance.division = division instance.event = division.event kwargs.update(instance=instance) super().__init__(**kwargs) division = self.instance.division people = division.eventlink_set.filter(katamatch=None) self.fields['existing_eventlink'].queryset = people
[docs] def clean(self): if not self.cleaned_data['manual_name'] and not self.cleaned_data['existing_eventlink']: raise forms.ValidationError("Specify either manual name or select from menu.") if self.cleaned_data['manual_name'] and self.cleaned_data['existing_eventlink']: raise forms.ValidationError("Specify only one of manual name or selection from menu.")
[docs]class KataBracketAddTeamForm(forms.ModelForm): class Meta: model = EventLink fields = ['manual_name'] existing_eventlink = forms.ModelChoiceField(label="Registered late arrival", queryset=EventLink.objects.none(), required=False) team = forms.ModelChoiceField(queryset=EventLink.objects.none(), required=False, empty_label="New team")
[docs] def __init__(self, division=None, **kwargs): if division is None: raise ValueError('Division is required.') if 'instance' in kwargs: instance = kwargs['instance'] else: instance = EventLink() instance.division = division instance.event = division.event kwargs.update(instance=instance) super().__init__(**kwargs) division = self.instance.division self.fields['existing_eventlink'].queryset = division.get_noshow_eventlinks() self.fields['team'].queryset = division.get_team_eventlinks()
[docs] def clean(self): if not self.cleaned_data['manual_name'] and not self.cleaned_data['existing_eventlink']: raise forms.ValidationError("Specify either manual name or select from menu.") if self.cleaned_data['manual_name'] and self.cleaned_data['existing_eventlink']: raise forms.ValidationError("Specify only one of manual name or selection from menu.")