# HG changeset patch # User Amit Sethi # Date 1290023978 -19800 # Node ID 0149f28a4f74b5be793552169e172910d99559bc # Parent 4cff1f43e4e1b7eb8b924fddef4a316ecdc3f161# Parent 394576ff8a2f4cd486a697cb1ca2bd3b656aab59 Merging heads diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/scipycon/registration/forms.py --- a/project/scipycon/registration/forms.py Thu Nov 18 01:20:54 2010 +0530 +++ b/project/scipycon/registration/forms.py Thu Nov 18 01:29:38 2010 +0530 @@ -3,6 +3,7 @@ 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 @@ 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'), diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/scipycon/registration/models.py --- a/project/scipycon/registration/models.py Thu Nov 18 01:20:54 2010 +0530 +++ b/project/scipycon/registration/models.py Thu Nov 18 01:29:38 2010 +0530 @@ -25,6 +25,10 @@ ('Other', 'Other') ) +SEX_CHOICES = ( + ('Male', 'Male'), + ('Female', 'Female'), + ) class Wifi(base_models.ScopedBase): """Defines wifi options at SciPy.in @@ -36,6 +40,27 @@ help_text=WIFI_HELP, verbose_name="Laptop") +class Accommodation(base_models.ScopedBase): + """Defines accommodation information for SciPy.in + """ + + user = models.ForeignKey(User) + + sex = models.CharField(max_length=50, choices=SEX_CHOICES, + verbose_name="Gender", + blank=True, null=True) + + accommodation_required = models.BooleanField( + default=False, blank=True, + verbose_name="Accommodation required", + help_text="Check if you need accommodation.") + + accommodation_days = models.IntegerField( + default=0, blank=True, + verbose_name="Number of days", + help_text="Number of days the accommodation is required for?") + + class Registration(base_models.ScopedBase): """Defines registration at SciPy.in""" @@ -80,6 +105,4 @@ self.registrant.last_name, self.registrant.email) -class Payment(base_models.ScopedBase): - """ Defines Payment Details of Users """ - pass + diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/scipycon/registration/views.py --- a/project/scipycon/registration/views.py Thu Nov 18 01:20:54 2010 +0530 +++ b/project/scipycon/registration/views.py Thu Nov 18 01:29:38 2010 +0530 @@ -11,7 +11,9 @@ from project.scipycon.base.models import Event from project.scipycon.registration.forms import RegistrationEditForm from project.scipycon.registration.forms import RegistrationSubmitForm +from project.scipycon.registration.forms import AccommodationForm from project.scipycon.registration.forms import WifiForm +from project.scipycon.registration.models import Accommodation from project.scipycon.registration.models import Registration from project.scipycon.registration.models import Wifi from project.scipycon.registration.utils import send_confirmation @@ -52,9 +54,17 @@ """Allows users that submitted a registration to edit it. """ - reg = Registration.objects.get(pk=id) + scope_entity = Event.objects.get(scope=scope) + + reg = Registration.objects.get(pk=int(id)) wifi = Wifi.objects.get(user=reg.registrant) + # TODO: This is an ugly hack to add accommodation form + # details at later stage for SciPy.in 2010. This must be + # removed for SciPy.in 2011 + acco, created = Accommodation.objects.get_or_create(user=reg.registrant, + scope=scope_entity) + if reg.registrant != request.user: redirect_to = reverse('scipycon_account', kwargs={'scope': scope}) @@ -66,8 +76,10 @@ if request.method == 'POST': registration_form = RegistrationEditForm(data=request.POST) wifi_form = WifiForm(data=request.POST) + acco_form = AccommodationForm(data=request.POST) - if registration_form.is_valid() and wifi_form.is_valid(): + if (registration_form.is_valid() and wifi_form.is_valid() and + acco_form.is_valid()): reg.organisation = registration_form.data.get('organisation') reg.occupation = registration_form.data.get('occupation') reg.city = registration_form.data.get('city') @@ -85,16 +97,13 @@ reg.save() wifi = wifi_form.save(reg.registrant, reg.scope) + acco = acco_form.save(reg.registrant, reg.scope) # Saved.. redirect redirect_to = reverse('scipycon_account', kwargs={'scope': scope}) return set_message_cookie(redirect_to, msg = u'Your changes have been saved.') - else: - import logging - logging.error(registration_form.data) - raise "Bow Bow" else: registration_form = RegistrationEditForm(initial={ 'id' : id, @@ -114,13 +123,21 @@ 'scope': wifi.scope, 'wifi': wifi.wifi }) + acco_form = AccommodationForm(initial={ + 'user': acco.user, + 'scope': acco.scope, + 'sex': acco.sex, + 'accommodation_required': acco.accommodation_required, + 'accommodation_days': acco.accommodation_days, + }) return render_to_response( template_name, RequestContext(request, { 'params': {'scope': scope}, 'registration': {'id': id}, 'registration_form': registration_form, - 'wifi_form': wifi_form})) + 'wifi_form': wifi_form, + 'acco_form': acco_form})) def submit_registration(request, scope, template_name='registration/submit-registration.html'): @@ -157,6 +174,7 @@ registration_form = RegistrationSubmitForm(data=request.POST) registrant_form = RegistrantForm(data=request.POST) wifi_form = WifiForm(data=request.POST) + acco_form = AccommodationForm(data=request.POST) if request.POST.get('action', None) == 'login': login_form = AuthenticationForm(data=request.POST) @@ -191,7 +209,8 @@ else: newuser = user - if registration_form.is_valid() and newuser and wifi_form.is_valid(): + if (registration_form.is_valid() and newuser and wifi_form.is_valid() + and acco_form.is_valid()): allow_contact = registration_form.cleaned_data.get( 'allow_contact') and True or False conference = registration_form.cleaned_data.get( @@ -226,9 +245,8 @@ reg.save() wifi = wifi_form.save(registrant, scope_entity) - - # send_confirmation(registrant, scope_entity,password=passwd) - + acco = acco_form.save(registrant, scope_entity) + send_confirmation(registrant, scope_entity, password=passwd) redirect_to = reverse('scipycon_registrations', kwargs={'scope': scope}) return set_message_cookie(redirect_to, @@ -239,6 +257,7 @@ registration_form = RegistrationSubmitForm() registrant_form = RegistrantForm() wifi_form = WifiForm() + acco_form = AccommodationForm() login_form = AuthenticationForm() @@ -248,6 +267,7 @@ 'registration_form': registration_form, 'registrant_form' : registrant_form, 'over_reg' : reg_count >= REG_TOTAL and True or False, + 'acco_form': acco_form, 'wifi_form' : wifi_form, 'message' : message, 'login_form' : login_form diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/scipycon/talk/forms.py --- a/project/scipycon/talk/forms.py Thu Nov 18 01:20:54 2010 +0530 +++ b/project/scipycon/talk/forms.py Thu Nov 18 01:29:38 2010 +0530 @@ -47,7 +47,7 @@ required=False, widget=forms.TextInput(attrs={'size':'50'})) duration = forms.ChoiceField(choices=DURATION_CHOICES, required=True, - label=u'Preferred timeslot', help_text=u'Select preferred time slot') + label=u'Preferred time slot', help_text=u'Select preferred time slot') audience = forms.ChoiceField(choices=AUDIENCE_CHOICES, label=u'Intended audience', help_text=u'Select one of the available options or enter other type of intended audience') # audience_other = forms.CharField(label=u'Other intended audience', diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/perry.jpg Binary file project/static/img/perry.jpg has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/qutubshahi.jpg Binary file project/static/img/qutubshahi.jpg has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/scipy-poster-A3.png Binary file project/static/img/scipy-poster-A3.png has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/scipy-poster-A4.png Binary file project/static/img/scipy-poster-A4.png has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/scipy-poster.png Binary file project/static/img/scipy-poster.png has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/static/img/stefan.jpg Binary file project/static/img/stefan.jpg has changed diff -r 4cff1f43e4e1 -r 0149f28a4f74 project/templates/_menu.html --- a/project/templates/_menu.html Thu Nov 18 01:20:54 2010 +0530 +++ b/project/templates/_menu.html Thu Nov 18 01:29:38 2010 +0530 @@ -10,14 +10,19 @@
  • - Talks & CfP + Conference & CfP