Skip to content
Snippets Groups Projects
Verified Commit d6074248 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Validate and reformat phone numbers in event registration form.

parent f8fe629b
No related branches found
No related tags found
Loading
...@@ -17,6 +17,7 @@ setup( ...@@ -17,6 +17,7 @@ setup(
'django-ldapdb', 'django-ldapdb',
'django-tables2', 'django-tables2',
'pexpect', 'pexpect',
'phonenumbers',
'python-dateutil', 'python-dateutil',
'python-pam' 'python-pam'
], ],
......
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
import phonenumbers
CHANNEL_CHOICES = { CHANNEL_CHOICES = {
('none', _('Keine Angabe')), ('none', _('Keine Angabe')),
...@@ -15,6 +16,21 @@ SEX_CHOICES = { ...@@ -15,6 +16,21 @@ SEX_CHOICES = {
('m', _('Junge (männlich)')), ('m', _('Junge (männlich)')),
} }
def is_phonenumber(number):
try:
phonenumbers.parse(number, 'DE')
except:
raise forms.ValidationError(_('%s ist keine gültige Telefonnummer!') % number)
def clean_phonenumber(obj, field):
value = obj.cleaned_data[field]
if value:
pn = phonenumbers.parse(pn, 'DE')
value = phonenumbers.format_number(pn, phonenumbers.PhoneNumberFormat.E164)
return value
class EventRegisterForm(forms.Form): class EventRegisterForm(forms.Form):
cn = forms.CharField(label=_('Dein Name'), disabled=True) cn = forms.CharField(label=_('Dein Name'), disabled=True)
date_of_birth = forms.DateField(label=_('Dein Geburtsdatum'), disabled=True) date_of_birth = forms.DateField(label=_('Dein Geburtsdatum'), disabled=True)
...@@ -29,7 +45,8 @@ class EventRegisterForm(forms.Form): ...@@ -29,7 +45,8 @@ class EventRegisterForm(forms.Form):
# FIXME add validation # FIXME add validation
mobile = forms.CharField(required=False, label=_('Deine Handynummer'), mobile = forms.CharField(required=False, label=_('Deine Handynummer'),
help_text=_('Deine Handynummer hilft uns, dich im Notfall während der Veranstaltung zu erreichen, z.B. wenn du mit deiner Gruppe alleine auf eienr Konferenz o.ä. unterwegs bist. Solltest du kein Handy haben, kannst du das Feld leer lassen.') help_text=_('Deine Handynummer hilft uns, dich im Notfall während der Veranstaltung zu erreichen, z.B. wenn du mit deiner Gruppe alleine auf eienr Konferenz o.ä. unterwegs bist. Solltest du kein Handy haben, kannst du das Feld leer lassen.'),
validators=[is_phonenumber]
) )
school = forms.CharField(label=_('Schule'), school = forms.CharField(label=_('Schule'),
...@@ -45,7 +62,8 @@ class EventRegisterForm(forms.Form): ...@@ -45,7 +62,8 @@ class EventRegisterForm(forms.Form):
) )
guardian_mail = forms.EmailField(label=_('E-Mail-Adresse des Erziehungsberechtigten')) guardian_mail = forms.EmailField(label=_('E-Mail-Adresse des Erziehungsberechtigten'))
guardian_mobile = forms.CharField(label=_('Handynummer des Erziehungsberechtigten'), guardian_mobile = forms.CharField(label=_('Handynummer des Erziehungsberechtigten'),
help_text=_('Die Handynummer benötigen wir für Notfälle, falls wir deine Eltern während der Veranstaltung dringend erreichen müssen.') help_text=_('Die Handynummer benötigen wir für Notfälle, falls wir deine Eltern während der Veranstaltung dringend erreichen müssen.'),
validators=[is_phonenumber]
) )
channel = forms.ChoiceField(label=_('Wie hast du von der Veranstaltung erfahren?'), choices=CHANNEL_CHOICES) channel = forms.ChoiceField(label=_('Wie hast du von der Veranstaltung erfahren?'), choices=CHANNEL_CHOICES)
...@@ -67,3 +85,7 @@ class EventRegisterForm(forms.Form): ...@@ -67,3 +85,7 @@ class EventRegisterForm(forms.Form):
accept_terms = forms.BooleanField(label=_('Einverständniserklärung Eltern'), accept_terms = forms.BooleanField(label=_('Einverständniserklärung Eltern'),
help_text=_('Eltern: Mein Kind hat das Anmeldeformular gemeinsam mit mir ausgefüllt und ich bin mit der Teilnahme einverstanden. Mir ist bewusst, dass die Anmeldung verbindlich ist und ein Rücktritt nur in Ausnahmefällen mit triftigem Grund möglich ist. Darüberhinaus erkläre ich mich einverstanden, den Teilnehmerbeitrag vorab zu begleichen und erkläre mich mit den oben genannten Erstattungsrichtlinien einverstanden.') help_text=_('Eltern: Mein Kind hat das Anmeldeformular gemeinsam mit mir ausgefüllt und ich bin mit der Teilnahme einverstanden. Mir ist bewusst, dass die Anmeldung verbindlich ist und ein Rücktritt nur in Ausnahmefällen mit triftigem Grund möglich ist. Darüberhinaus erkläre ich mich einverstanden, den Teilnehmerbeitrag vorab zu begleichen und erkläre mich mit den oben genannten Erstattungsrichtlinien einverstanden.')
) )
# Cleaning methods to reformat phone numbers
clean_mobile = clean_phonenumber('mobile')
clean_guardian_mobile = clean_phonenumber('guardian_mobile')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment