shiftregister/shiftregister/app/forms.py

53 lines
1.9 KiB
Python

from django import forms
from django.core.exceptions import ValidationError
from dynamic_preferences.registries import global_preferences_registry
from phonenumber_field.formfields import PhoneNumberField
from phonenumber_field.validators import validate_international_phonenumber
from .models import Helper
global_preferences = global_preferences_registry.manager()
def text_input():
return forms.TextInput(attrs={"class": "input"})
def validate_allowed_countries(value):
if not f"{value.country_code}" in global_preferences["helper__allowed_countries"]:
raise ValidationError(
"Vorwahl nicht erlaubt, bitte wende dich an den Infopoint oder schicke uns eine Mail"
)
return value
class RegisterForm(forms.Form):
name = forms.CharField(
max_length=Helper.name.field.max_length, label="Name", widget=text_input()
)
phone = PhoneNumberField(
max_length=Helper.phone.field.max_length,
label="Handynummer für Benachrichtigungen",
help_text="Wir nutzen deine Handynummer, um dir Benachrichtigungen zu Schichten zu schicken. Wir löschen deine Daten 7 Tage nach dem Festival.",
widget=text_input(),
validators=[
validate_international_phonenumber,
validate_allowed_countries,
],
)
okf = forms.BooleanField(label="Ich bin damit einverstanden, SMS zu erhalten.")
class AstaForm(forms.Form):
confirm = forms.BooleanField(
required=True,
label="Ich habe mich beim AStA als temporäres oder reguläres Mitglied (keine Fördermitgliedschaft!) angemeldet.",
help_text="Aus Versicherungsgründen müssen Helfer*innen ordentliche Mitglieder des AStA Bamberg e. V. sein. Die Mitgliedschaft ist kostenlos.",
)
# placeholder form for simple submit button use cases so we get csrf protection
class EmptyForm(forms.Form):
pass