61 lines
2.5 KiB
Python
61 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
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=_('Wenn du noch kein DAV Mitglied bist,'
|
|
' oder deine Aufnahme noch in Arbeit ist,'
|
|
' kreuze dieses Feld hier an.'))
|
|
|
|
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}),
|
|
}
|
|
|
|
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
|