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.")