summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadhusudan.C.S2010-11-08 00:48:28 +0530
committerMadhusudan.C.S2010-11-08 00:48:28 +0530
commitddb3790087460381b8a0d78b429db1fa55c750c9 (patch)
tree455b9fa8fe22ffd0e37dbf12b060f73150dbef36
parent54a1520049b8a4a7907a969053dd70a104c8629d (diff)
downloadscipycon-ddb3790087460381b8a0d78b429db1fa55c750c9.tar.gz
scipycon-ddb3790087460381b8a0d78b429db1fa55c750c9.tar.bz2
scipycon-ddb3790087460381b8a0d78b429db1fa55c750c9.zip
Added accommodation Django form, wrote the save method and overwrote the cleaner.
-rw-r--r--project/scipycon/registration/forms.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/project/scipycon/registration/forms.py b/project/scipycon/registration/forms.py
index 50bfad0..a646399 100644
--- a/project/scipycon/registration/forms.py
+++ b/project/scipycon/registration/forms.py
@@ -3,6 +3,7 @@ from django.core.exceptions import ObjectDoesNotExist
from project.scipycon.registration.models import SIZE_CHOICES
from project.scipycon.registration.models import OCCUPATION_CHOICES
+from project.scipycon.registration.models import Accommodation
from project.scipycon.registration.models import Wifi
@@ -78,6 +79,54 @@ class WifiForm(forms.ModelForm):
model = Wifi
fields = ('wifi',)
+
+class AccommodationForm(forms.ModelForm):
+ """PyCon Accommodation form
+ """
+
+ def save(self, user, scope):
+ try:
+ acco = Accommodation.objects.get(user=user, scope=scope)
+ except ObjectDoesNotExist:
+ acco = Accommodation(user=user, scope=scope)
+
+ sex = self.cleaned_data['sex']
+ accommodation_required = self.cleaned_data['accommodation_required']
+ accommodation_days = self.cleaned_data['accommodation_days']
+
+ acco.sex = sex
+ acco.accommodation_required = accommodation_required
+ acco.accommodation_days = accommodation_days if (
+ accommodation_days) else 0
+
+ acco.save()
+
+ return acco
+
+ def clean(self):
+ """Makes sure that accommodation form is correct, i.e. sex
+ and number of days required are filled in when the accommodation
+ is required.
+ """
+ cleaned = self.cleaned_data
+
+ sex = self.cleaned_data['sex']
+ accommodation_required = self.cleaned_data['accommodation_required']
+ accommodation_days = self.cleaned_data['accommodation_days']
+
+ if accommodation_required and (not sex or not accommodation_days
+ or accommodation_days == 0):
+ raise forms.ValidationError(
+ u"If accommodation is required both gender and number of "
+ "days for which accommodation is required is mandatory.")
+
+ return super(AccommodationForm, self).clean()
+
+ class Meta:
+ model = Accommodation
+ fields = ('accommodation_required', 'sex', 'accommodation_days')
+
+
PC = (
('all', 'all'),
('paid', 'paid'),