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.
65 lines
3.4 KiB
65 lines
3.4 KiB
9 years ago
|
from django.forms import ModelForm, EmailInput, TextInput, DateInput, CheckboxSelectMultiple, CharField, CheckboxInput, BooleanField
|
||
|
from django.utils import timezone
|
||
|
from registration.models import Member
|
||
|
|
||
|
|
||
|
class MemberForm(ModelForm):
|
||
|
self_ident_other = CharField(required=False, label='Self identification', widget=TextInput(attrs={'class': 'mdl-textfield__input'}))
|
||
|
gender_other = CharField(required=False, label='Other', widget=TextInput(attrs={'class': 'mdl-textfield__input'}))
|
||
|
priveleges = BooleanField(label='I acknowledge', widget=CheckboxInput(attrs={'class': 'mdl-checkbox__input'}))
|
||
|
waiver_substitute = BooleanField(label='I have read and agree to the above terms & conditions.', widget=CheckboxInput(attrs={'class': 'mdl-checkbox__input'}))
|
||
|
|
||
|
class Meta:
|
||
|
model = Member
|
||
|
self_ident_choices = (
|
||
|
('First Nations; Métis; or Inuit', 'First Nations; Métis; or Inuit'),
|
||
|
('visible minority', 'Visible Minority'),
|
||
|
('caucasian', 'Caucasian'),
|
||
|
('Other', 'Other')
|
||
|
)
|
||
|
gender_choices = (
|
||
|
('male', 'Male'),
|
||
|
('female', 'Female'),
|
||
|
('other', 'other')
|
||
|
)
|
||
|
exclude = ('waiver',)
|
||
|
fields = ['email', 'email_consent', 'first_name', 'last_name', 'preferred_name', 'date_of_birth',
|
||
|
'guardian_name', 'phone', 'street', 'city', 'province', 'country', 'post_code', 'self_identification',
|
||
|
'gender', 'waiver']
|
||
|
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'}),
|
||
|
'preferred_name': TextInput(attrs={'class': 'mdl-textfield__input'}),
|
||
|
'date_of_birth': DateInput(attrs={'class': 'mdl-textfield__input'}),
|
||
|
'guardian_name': DateInput(attrs={'class': 'mdl-textfield__input', 'disabled': 'disabled'}),
|
||
|
'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]'}),
|
||
|
'self_identification': CheckboxSelectMultiple(choices=self_ident_choices,
|
||
|
attrs={'class': 'mdl-checkbox__input'}),
|
||
|
'gender': CheckboxSelectMultiple(choices=gender_choices, 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
|