Files
django-dav-events/dav_registration/forms.py
heinzel d3d63097db
All checks were successful
buildbot/tox Build done.
FIX f016f4af41 (python2 encoding error)
2020-12-16 10:32:12 +01:00

91 lines
3.8 KiB
Python

# -*- coding: utf-8 -*-
import datetime
import logging
from django import forms
from django.utils.translation import ugettext, ugettext_lazy as _
from .models import Registration
logger = logging.getLogger(__name__)
class RegistrationForm(forms.ModelForm):
not_dav_member = forms.BooleanField(required=False,
label=_(u'Ich bin noch kein DAV Mitglied.'),
help_text=u'%s<br />\n%s' % (
_(u'Wenn du noch kein DAV Mitglied bist,'
u' oder deine Aufnahme noch in Arbeit ist,'
u' kreuze dieses Feld hier an.'),
_(u'Spätestens zu Veranstaltungsbeginn muss'
u' jedoch eine Mitgliedschaft bestehen.')
))
class Meta:
model = Registration
exclude = ['event', 'created_at', 'privacy_policy', 'purge_at', 'answered']
widgets = {
'dav_member': forms.HiddenInput(),
'emergency_contact': forms.Textarea(attrs={'rows': 4}),
'experience': forms.Textarea(attrs={'rows': 5}),
'note': forms.Textarea(attrs={'rows': 5}),
}
labels = {
'apply_reduced_fee': _(u'Ich bin noch keine 25 Jahre alt oder besitze einen "Karlsruher Pass".'),
}
def clean_year_of_birth(self):
now = datetime.datetime.now()
year_now = now.year
max_age = 100
val = self.cleaned_data.get('year_of_birth')
if val > year_now:
raise forms.ValidationError(
ugettext(u'Dein Geburtsjahr liegt in der Zukunft?'
u' Das finden wir gut,'
u' aber bitte melde dich besser mal per E-Mail bei uns.'),
code='to_young',
)
elif val < (year_now - max_age):
raise forms.ValidationError(
ugettext(u'Du bist schon über %(max_age)d Jahre alt?'
u' Das finden wir gut,'
u' aber bitte melde dich besser mal per E-Mail bei uns.'),
params={'max_age': max_age},
code='to_old',
)
return val
def clean_experience(self):
val = self.cleaned_data.get('experience')
if val == '':
need_experience = True
if self.instance.event.sport == 'W':
need_experience = False
if need_experience:
raise forms.ValidationError(
ugettext(u'Die Tourenleiter*innen brauchen ein paar Angaben,'
u' was du bereits kannst oder wie fit du bist.'),
code='need_experience',
)
return val
def clean_privacy_policy_accepted(self):
val = self.cleaned_data.get('privacy_policy_accepted')
if not val and self.instance.privacy_policy:
raise forms.ValidationError(
ugettext(u'Wir müssen deine Daten leider speichern können,'
u' damit wir wissen, dass du teilnehmen möchtest.'),
code='privacy_policy_not_accepted',
)
return val
def clean(self):
super(RegistrationForm, self).clean()
dav_member = self.cleaned_data.get('dav_member')
dav_number = self.cleaned_data.get('dav_number')
if dav_member and not dav_number:
error_msg = ugettext(u'Wenn du DAV Mitglied bist, brauchen wir deine Mitgliedsnummer.')
self.add_error('not_dav_member', error_msg)
raise forms.ValidationError(error_msg, code='dav_number_missing')
return self.cleaned_data