# -*- 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