project/scipycon/registration/forms.py
changeset 199 97cbeda302a9
parent 191 0eb941d14ec3
child 246 1bd29275df1f
child 272 4801b7adbbc5
equal deleted inserted replaced
198:92fbbbc4c97a 199:97cbeda302a9
     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         )