X-Git-Url: https://git.mdrn.pl/prawokultury.git/blobdiff_plain/caeac0d2d5df635b21719c5e5db1980532537464..ab44e9c3f8c46b358135453ae58c5cef0df1c77b:/prawokultury/contact_forms.py diff --git a/prawokultury/contact_forms.py b/prawokultury/contact_forms.py index 3848a68..8bd07eb 100644 --- a/prawokultury/contact_forms.py +++ b/prawokultury/contact_forms.py @@ -7,10 +7,12 @@ from contact.forms import ContactForm from contact.models import Contact from contact.fields import HeaderField from django.utils.functional import lazy -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_noop as _ from django.utils.safestring import mark_safe from migdal.models import Entry +from prawokultury.countries import COUNTRIES, TRAVEL_GRANT_COUNTRIES + mark_safe_lazy = lazy(mark_safe, unicode) @@ -19,23 +21,34 @@ class RegistrationForm(ContactForm): save_as_tag = '2017' conference_name = u'CopyCamp 2017' + notify_on_register = False form_title = _('Registration') admin_list = ['first_name', 'last_name', 'organization'] + travel_grant_countries = TRAVEL_GRANT_COUNTRIES + first_name = forms.CharField(label=_('First name'), max_length=128) last_name = forms.CharField(label=_('Last name'), max_length=128) contact = forms.EmailField(label=_('E-mail'), max_length=128) - organization = forms.CharField(label=_('Organization'), - max_length=256, required=False) - country = forms.CharField(label=_('Country'), max_length=128) + organization = forms.CharField(label=_('Organization'), max_length=256, required=False) + country = forms.ChoiceField(label=_('Country of residence'), choices=zip(COUNTRIES, COUNTRIES)) + travel_grant = forms.BooleanField( + label=_('I require financial assistance to attend CopyCamp 2017.'), required=False) + travel_grant_motivation = forms.CharField( + label=_('Please write us about yourself and why you want to come to CopyCamp. ' + 'This information will help us evaluate your travel grant application:'), + help_text=_('Financial assistance for German audience is possible ' + 'thanks to the funds of the German Federal Foreign Office transferred by ' + 'the Foundation for Polish-German Cooperation.'), + widget=forms.Textarea, max_length=600, required=False) days = forms.ChoiceField( label=_("I'm planning to show up on"), choices=[ ('both', _('Both days of the conference')), - ('only-27th', _('October 27th only')), - ('only-28th', _('October 28th only')), + ('only-28th', _('September 28th only')), + ('only-29th', _('September 29th only')), ], widget=forms.RadioSelect()) # ankieta @@ -48,6 +61,7 @@ class RegistrationForm(ContactForm): ('2', _('twice')), ('3', _('three times')), ('4', _('four times')), + ('5', _('five times')), ], widget=forms.RadioSelect()) age = forms.ChoiceField( required=False, @@ -61,18 +75,9 @@ class RegistrationForm(ContactForm): ('56-65', _('56-65')), ('66+', _('66 or above')), ], widget=forms.RadioSelect()) - distance = forms.ChoiceField( - required=False, - label=_("3. How far will you travel to attend CopyCamp?"), - choices=[ - ('0-50', _('0-50 km')), - ('51-100', _('51-100 km')), - ('101-200', _('101-200 km')), - ('200+', _('200 km or more')), - ], widget=forms.RadioSelect()) areas = forms.MultipleChoiceField( required=False, - label=_("4. Please indicate up to 3 areas you feel most affiliated with"), + label=_("3. Please indicate up to 3 areas you feel most affiliated with"), choices=[ ('sztuki plastyczne', _('visual art')), ('literatura', _('literature')), @@ -95,7 +100,7 @@ class RegistrationForm(ContactForm): areas_other = forms.CharField(required=False, label=_('Fill if you selected “other” above')) source = forms.ChoiceField( required=False, - label=_("5. Please indicate how you received information about the conference:"), + label=_("4. Please indicate how you received information about the conference:"), choices=[ ('znajomi', _('through friends sharing on the web')), ('znajomi2', _('through friends by other means')), @@ -109,9 +114,9 @@ class RegistrationForm(ContactForm): required=False, label=_("6. Please indicate the most important factor for your willingness to participate:"), choices=[ - ('idea', _('the main idea of the conference')), - ('speaker', _('particular speaker(s)')), + ('speaker', _('listening to particular speaker(s)')), ('networking', _('good networking occasion')), + ('partnering', _('partnering with organisations present at the event')), ('other', _('other (please specify below)')), ], widget=forms.RadioSelect()) motivation_other = forms.CharField(required=False, label=_('Fill if you selected “other” above')) @@ -149,12 +154,28 @@ class RegistrationForm(ContactForm): raise forms.ValidationError(_('Select at most 3 areas')) return data + def clean(self): + cleaned_data = self.cleaned_data + country = cleaned_data['country'] + travel_grant = cleaned_data['travel_grant'] + motivation = cleaned_data['travel_grant_motivation'] + if country not in self.travel_grant_countries and travel_grant: + raise forms.ValidationError(_('Travel grant is not provided for the selected country')) + if travel_grant and not motivation: + self._errors['travel_grant_motivation'] = _('Please provide this information') + raise forms.ValidationError(_('To apply for a travel grant you must provide additional information.')) + if not travel_grant and motivation: + cleaned_data['motivation'] = '' + return cleaned_data + def main_fields(self): - return [self[name] for name in ('first_name', 'last_name', 'contact', 'organization', 'country', 'days')] + return [self[name] for name in ( + 'first_name', 'last_name', 'contact', 'organization', 'country', + 'travel_grant', 'travel_grant_motivation', 'days')] def survey_fields(self): return [self[name] for name in ( - 'times_attended', 'age', 'distance', + 'times_attended', 'age', 'areas', 'areas_other', 'source', 'source_other', 'motivation', 'motivation_other')] def agreement_fields(self): @@ -185,7 +206,6 @@ tracks = ( class RegisterSpeaker(RegistrationForm): - from django.utils.translation import ugettext_noop as _ form_tag = 'register-speaker' save_as_tag = '2017-speaker' form_title = _('Open call for presentations') @@ -273,6 +293,8 @@ class RemindForm(ContactForm): form_tag = 'remind-me' save_as_tag = 'remind-me-2017' form_title = u'CopyCamp 2017' + notify_on_register = False + notify_user = False class NextForm(ContactForm):