# -*- coding: utf-8 -*- from __future__ import absolute_import #django from django import forms from django.core.exceptions import ObjectDoesNotExist #django.contrib from django.contrib.auth.models import User from .models import SIZE_CHOICES from .models import Registration from .models import Wifi from project.kiwipycon.sponsor.models import Sponsor class RegistrationSubmitForm(forms.Form): """PyCon registration form """ tshirt = forms.ChoiceField(choices=SIZE_CHOICES, required=True, label=u'T-shirt size', help_text=u'Yes, we all get a t-shirt!') # beverage = forms.CharField(required=True, label=u'Beverage', # help_text=u'Your beverage of choice - coffee, tea etc', # max_length=255, # widget=forms.TextInput(attrs={'size':'50'})) # diet = forms.CharField(required=False, label=u'Dietary', # help_text=u'Special dietary requirements - vegetarian etc', # max_length=255, # widget=forms.TextInput(attrs={'size':'50'})) organisation = forms.CharField(required=True, label=u'Organisation', help_text=u'The primary organisation that you are a member of.', max_length=255, widget=forms.TextInput(attrs={'size':'50'})) occupation = forms.CharField(required=True, label=u'Occupation', help_text=u'Title of your occupation', max_length=255, widget=forms.TextInput(attrs={'size':'50'})) city = forms.CharField(required=True, label=u'City', help_text=u'City of residence', max_length=255, widget=forms.TextInput(attrs={'size':'50'})) postcode = forms.CharField(required=False, label=u'Postcode', help_text=u'This field is optional', max_length=10, widget=forms.TextInput(attrs={'size':'10'})) allow_contact = forms.BooleanField(required=False, label=u'Contact', help_text=u'May organizers of SciPy.in contact you after the event?') conference = forms.BooleanField(required=False, label=u'Conference', help_text=u"""Do you intend to attend the SciPy conference? Note: Only conference has an registration fee of Rs.200 which you will pay on the spot.""") tutorial = forms.BooleanField(required=False, label=u'Tutorial', help_text=u'Do you intend to attend the tutorials?') sprint = forms.BooleanField(required=False, label=u'Sprint', help_text=u'Do you intend to attend the sprints?') # party = forms.BooleanField(required=False, label=u'Pre-con party', # help_text=u'Do you intend to attend the pre-conference party on Friday?') # discount = forms.BooleanField(required=False, label=u'Student/Unwaged?', # help_text=u'You will be required to present your Community Services '\ # 'Card or Student ID on arrival.') # sponsor = forms.CharField(required=False, label=u'Sponsor code', # help_text=u'If attending as a sponsor please enter your sponsor code.', # max_length=50, # widget=forms.TextInput(attrs={'size':'20'})) def demographic_fields(self): return (self['organisation'], self['occupation'], self['city'], self['postcode']) def personal_fields(self): return (self['tshirt'], self['conference'], self['tutorial'], self['sprint'], self['allow_contact']) # def other_fields(self): # return (self['sponsor'],) # # def clean_sponsor(self): # """Validates that the entered sponsor code is valid and within limits # of allowed guests # """ # sponsorcode = self.cleaned_data.get("sponsor") # if sponsorcode: # try: # sponsor = Sponsor.objects.get(slug=sponsorcode) # except ObjectDoesNotExist: # raise forms.ValidationError( # u"The sponsor code you entered is not valid.") # if sponsor: # guests = sponsor.guests # if guests == 0: # raise forms.ValidationError( # u"The sponsor code you entered is not valid.") # count = Registration.objects.filter( # sponsor=sponsorcode).count() # if count >= guests: # raise forms.ValidationError( # u"That sponsor has reached limit of guests.") # # # return sponsorcode class RegistrationEditForm(RegistrationSubmitForm): id = forms.CharField(widget=forms.HiddenInput) sponsor = forms.CharField(required=False, widget=forms.HiddenInput) class WifiForm(forms.ModelForm): """PyCon wifi form """ def save(self, user): wifi = Wifi(user=user, wifi=self.cleaned_data['wifi']) wifi.save() return wifi class Meta: model = Wifi fields = ('wifi',) PC = ( ('all', 'all'), ('paid', 'paid'), ('not paid', 'not paid') ) HC = ( ('all', 'all'), ('party', 'party'), ('no party', 'no party') ) AC = ( ('all', 'all'), ('0', '0'), ('10', '10'), ('20', '20'), ('40', '40'), ) OC = ( ('email', 'email'), ('amount', 'amount'), ) IC = ( ('Name', 'name'), ('Email', 'email'), ('Amount', 'amount'), ('Organisation', 'organisation'), ('Conference', 'conference'), ('Tutorial', 'tutorial'), ('Sprint', 'sprint'), ('T-size', 'tshirt'), ) SC = ( ('all', 'all'), ('S', 'S'), ('M', 'M'), ('L', 'L'), ('XL', 'XL'), ) class RegistrationAdminSelectForm(forms.Form): """ Used to make selection for csv download """ by_payment = forms.ChoiceField(choices=PC, required=False, label=u'By payment') by_amount = forms.MultipleChoiceField(choices=AC, required=False, label=u'By amount') by_party = forms.ChoiceField(choices=HC, required=False, label=u'by party') by_tshirt = forms.ChoiceField(choices=SC, required=False, label=u'by tshirt size') order_by = forms.ChoiceField(choices=OC, required=False, label=u'order results') include = forms.MultipleChoiceField(choices=IC, required=False, label=u'Include fields')