Files
django-dav-events/dav_registration/forms.py
heinzel 98a6fc3ce7
All checks were successful
buildbot/tox Build done.
try to make pylint happy
2022-06-08 00:08:09 +02:00

91 lines
3.7 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=_('Ich bin noch kein DAV Mitglied.'),
help_text='%s<br />\n%s' % (
_('Wenn du noch kein DAV Mitglied bist,'
' oder deine Aufnahme noch in Arbeit ist,'
' kreuze dieses Feld hier an.'),
_('Spätestens zu Veranstaltungsbeginn muss'
' 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': _('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('Dein Geburtsjahr liegt in der Zukunft?'
' Das finden wir gut,'
' aber bitte melde dich besser mal per E-Mail bei uns.'),
code='to_young',
)
elif val < (year_now - max_age):
raise forms.ValidationError(
ugettext('Du bist schon über %(max_age)d Jahre alt?'
' Das finden wir gut,'
' 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('Die Tourenleiter*innen brauchen ein paar Angaben,'
' 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('Wir müssen deine Daten leider speichern können,'
' damit wir wissen, dass du teilnehmen möchtest.'),
code='privacy_policy_not_accepted',
)
return val
def clean(self):
super().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('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