diff options
author | Madhusudan.C.S | 2010-11-08 00:48:28 +0530 |
---|---|---|
committer | Madhusudan.C.S | 2010-11-08 00:48:28 +0530 |
commit | ddb3790087460381b8a0d78b429db1fa55c750c9 (patch) | |
tree | 455b9fa8fe22ffd0e37dbf12b060f73150dbef36 | |
parent | 54a1520049b8a4a7907a969053dd70a104c8629d (diff) | |
download | scipycon-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.py | 49 |
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'), |