Files
django-dav-events/dav_registration/forms.py
heinzel 63026e429b
All checks were successful
buildbot/tox Build done.
Fix #9 Registrations: Add support for non members
2020-10-15 17:44:12 +02:00

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