mirror of https://github.com/fspc/workstand.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
3.1 KiB
58 lines
3.1 KiB
from django.forms import ModelForm, EmailInput, TextInput, DateInput, CheckboxInput, BooleanField, Textarea, DateField, CheckboxSelectMultiple
|
|
from django.utils import timezone
|
|
from registration.models import Member
|
|
|
|
|
|
class MemberForm(ModelForm):
|
|
input_formats = ['%Y-%m-%d', '%y-%m-%d', '%d-%m-%y', '%d-%m-%Y',
|
|
'%Y/%m/%d', '%y/%m/%d', '%d/%m/%y', '%d/%m/%Y']
|
|
|
|
waiver_substitute = BooleanField(required=False, label='I have read and agree to the above terms & conditions.',
|
|
widget=CheckboxInput(attrs={'class': 'mdl-checkbox__input'}))
|
|
date_of_birth = DateField(required=False, input_formats=input_formats,
|
|
widget=DateInput(attrs={'class': 'mdl-textfield__input'}))
|
|
|
|
class Meta:
|
|
model = Member
|
|
|
|
exclude = ('waiver',)
|
|
fields = ['email', 'email_consent', 'first_name', 'last_name', 'preferred_name', 'date_of_birth',
|
|
'guardian_name', 'phone', 'street', 'city', 'province', 'country', 'post_code', 'waiver',
|
|
'banned', 'suspended', 'notes', 'involvement']
|
|
widgets = {
|
|
'email': EmailInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'email_consent': CheckboxInput(attrs={'class': 'mdl-checkbox__input'}),
|
|
'first_name': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'last_name': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'involvement': CheckboxSelectMultiple(choices=Member.involvement_choices,
|
|
attrs={'class': 'mdl-checkbox__input'}),
|
|
'preferred_name': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'guardian_name': DateInput(attrs={'class': 'mdl-textfield__input', 'readonly': 'readonly'}),
|
|
'phone': TextInput(attrs={'class': 'mdl-textfield__input', 'pattern': '[0-9]*'}),
|
|
'street': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'city': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'province': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'country': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
|
'post_code': TextInput(attrs={'class': 'mdl-textfield__input',
|
|
'pattern': '[A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9]'}),
|
|
'notes': Textarea(attrs={'class': 'mdl-textfield__input'}),
|
|
'suspended': CheckboxInput(attrs={'class': 'mdl-checkbox__input'}),
|
|
'banned': CheckboxInput(attrs={'class': 'mdl-checkbox__input'}),
|
|
}
|
|
|
|
labels = {
|
|
'email_consent': 'I consent to receiving digital communication from the BCBC.'
|
|
}
|
|
|
|
def clean(self):
|
|
super(MemberForm, self).clean()
|
|
|
|
def save(self, *args, **kwargs):
|
|
commit = kwargs.pop('commit', True)
|
|
|
|
instance = super(MemberForm, self).save(*args, commit=False, **kwargs)
|
|
if self.cleaned_data['waiver_substitute']:
|
|
instance.waiver = timezone.now()
|
|
if commit:
|
|
instance.save()
|
|
return instance
|
|
|