1 from django import forms |
1 from django import forms |
2 from django.core.exceptions import ObjectDoesNotExist |
2 from django.core.exceptions import ObjectDoesNotExist |
3 |
3 |
4 from project.scipycon.registration.models import SIZE_CHOICES |
4 from project.scipycon.registration.models import SIZE_CHOICES |
5 from project.scipycon.registration.models import OCCUPATION_CHOICES |
5 from project.scipycon.registration.models import OCCUPATION_CHOICES |
|
6 from project.scipycon.registration.models import Accommodation |
6 from project.scipycon.registration.models import Wifi |
7 from project.scipycon.registration.models import Wifi |
7 |
8 |
8 |
9 |
9 class RegistrationSubmitForm(forms.Form): |
10 class RegistrationSubmitForm(forms.Form): |
10 """SciPyCon registration form |
11 """SciPyCon registration form |
76 |
77 |
77 class Meta: |
78 class Meta: |
78 model = Wifi |
79 model = Wifi |
79 fields = ('wifi',) |
80 fields = ('wifi',) |
80 |
81 |
|
82 |
|
83 class AccommodationForm(forms.ModelForm): |
|
84 """PyCon Accommodation form |
|
85 """ |
|
86 |
|
87 def save(self, user, scope): |
|
88 try: |
|
89 acco = Accommodation.objects.get(user=user, scope=scope) |
|
90 except ObjectDoesNotExist: |
|
91 acco = Accommodation(user=user, scope=scope) |
|
92 |
|
93 sex = self.cleaned_data['sex'] |
|
94 accommodation_required = self.cleaned_data['accommodation_required'] |
|
95 accommodation_days = self.cleaned_data['accommodation_days'] |
|
96 |
|
97 acco.sex = sex |
|
98 acco.accommodation_required = accommodation_required |
|
99 acco.accommodation_days = accommodation_days if ( |
|
100 accommodation_days) else 0 |
|
101 |
|
102 acco.save() |
|
103 |
|
104 return acco |
|
105 |
|
106 def clean(self): |
|
107 """Makes sure that accommodation form is correct, i.e. sex |
|
108 and number of days required are filled in when the accommodation |
|
109 is required. |
|
110 """ |
|
111 cleaned = self.cleaned_data |
|
112 |
|
113 sex = self.cleaned_data['sex'] |
|
114 accommodation_required = self.cleaned_data['accommodation_required'] |
|
115 accommodation_days = self.cleaned_data['accommodation_days'] |
|
116 |
|
117 if accommodation_required and (not sex or not accommodation_days |
|
118 or accommodation_days == 0): |
|
119 raise forms.ValidationError( |
|
120 u"If accommodation is required both gender and number of " |
|
121 "days for which accommodation is required is mandatory.") |
|
122 |
|
123 return super(AccommodationForm, self).clean() |
|
124 |
|
125 class Meta: |
|
126 model = Accommodation |
|
127 fields = ('accommodation_required', 'sex', 'accommodation_days') |
|
128 |
|
129 |
81 PC = ( |
130 PC = ( |
82 ('all', 'all'), |
131 ('all', 'all'), |
83 ('paid', 'paid'), |
132 ('paid', 'paid'), |
84 ('not paid', 'not paid') |
133 ('not paid', 'not paid') |
85 ) |
134 ) |