""" Django forms for RepApp. """ from django import forms from django.core.exceptions import ValidationError class HoneypotField(forms.BooleanField): default_widget = forms.CheckboxInput( {'style': 'display:none !important;', 'tabindex': '-1', 'autocomplete': 'off'}) def __init__(self, *args, **kwargs): kwargs.setdefault('widget', HoneypotField.default_widget) kwargs['required'] = False super().__init__(*args, **kwargs) def clean(self, value): if cleaned_value := super().clean(value): raise ValidationError('') else: return cleaned_value class RegisterDevice(forms.Form): mail = forms.EmailField( label="eMail Adresse", help_text="Diese eMail-Adresse wird für Aktualisierungen" " zur Anfrage verwendet.", max_length=200) device = forms.CharField( label="Art des Geräts", help_text="z.B. Küchenmaschine, Smartphone, Stehlampe, Drucker, ...", max_length=200 ) manufacturer = forms.CharField( label="Hersteller & Modell/Typ", max_length=200 ) error = forms.CharField( label="Fehlerbeschreibung", help_text="Beschreiben Sie hier das Problem ihres Gerätes.", widget=forms.Textarea ) device_picture = forms.FileField( label="Foto vom Gerät ", required=False ) type_plate_picture = forms.FileField( label="Foto vom Typenschild ", required=False ) follow_up = forms.BooleanField( label="Folgetermin", help_text="Kreuzen Sie diese Kästchen an wenn sie mit diesem Gerät bereits bei einem Repair-Café Termin waren.", required=False ) confirm_repair = forms.BooleanField( label="Informationen zur Reparaturabwicklung", help_text="Ich bin mit den " "Allgemeinen Bedingungen zur Reparaturabwicklung einverstanden.", required=True ) confirm_data = forms.BooleanField( label="Datenschutz", help_text=" Ich bin mit der Erhebung, Verarbeitung und Speicherung meiner Daten für " "die Bearbeitung meiner Anfrage gemäß der " "" "Datenschutzerklärung einverstanden.", required=True ) accept_agb = HoneypotField(label="") class RegisterGuest(forms.Form): name = forms.CharField( label="Name", max_length=200 ) phone = forms.CharField( label="Telefonnummer", max_length=200, help_text="Diese Telefonnummer wird für Rückfragen verwendet." ) residence = forms.CharField( label="Wohnort", max_length=200 ) accept_agb = HoneypotField(label="")