mirror of
				https://github.com/fspc/workstand.git
				synced 2025-10-31 00:15:35 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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', '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
 |