From 5c1128426a01486b365de2e59d7acb87f50c49b5 Mon Sep 17 00:00:00 2001 From: Tom Irgang Date: Sun, 23 Apr 2023 12:22:23 +0200 Subject: [PATCH] honeypot field --- rc_hip/repapp/forms.py | 19 +++++++++++ ...fe_address_alter_device_device_and_more.py | 33 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 rc_hip/repapp/migrations/0013_alter_cafe_address_alter_device_device_and_more.py diff --git a/rc_hip/repapp/forms.py b/rc_hip/repapp/forms.py index aabfb76..376b9e3 100644 --- a/rc_hip/repapp/forms.py +++ b/rc_hip/repapp/forms.py @@ -1,4 +1,21 @@ 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): @@ -48,6 +65,7 @@ class RegisterDevice(forms.Form): "Datenschutzerklärung einverstanden.", required=True ) + accept_agb = HoneypotField(label="") class RegisterGuest(forms.Form): @@ -64,3 +82,4 @@ class RegisterGuest(forms.Form): label="Wohnort", max_length=200 ) + accept_agb = HoneypotField(label="") diff --git a/rc_hip/repapp/migrations/0013_alter_cafe_address_alter_device_device_and_more.py b/rc_hip/repapp/migrations/0013_alter_cafe_address_alter_device_device_and_more.py new file mode 100644 index 0000000..0155f4c --- /dev/null +++ b/rc_hip/repapp/migrations/0013_alter_cafe_address_alter_device_device_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2 on 2023-04-23 10:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('repapp', '0012_remove_device_secret_remove_guest_confirmed_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='cafe', + name='address', + field=models.CharField(max_length=200, verbose_name='Adresse'), + ), + migrations.AlterField( + model_name='device', + name='device', + field=models.CharField(max_length=200, verbose_name='Art des Geräts'), + ), + migrations.AlterField( + model_name='device', + name='error', + field=models.TextField(verbose_name='Fehlerbeschreibung'), + ), + migrations.AlterField( + model_name='device', + name='manufacturer', + field=models.CharField(max_length=200, verbose_name='Hersteller & Modell/Typ'), + ), + ]