From 433512a2569850d6d25871778393fa1f32be1ad9 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 26 Jun 2017 17:06:20 +0200 Subject: [PATCH] Optionally ask for email addresses twice --- src/pretix/base/settings.py | 4 ++++ src/pretix/control/forms/event.py | 5 +++++ .../templates/pretixcontrol/event/settings.html | 1 + src/pretix/presale/forms/checkout.py | 11 +++++++++++ 4 files changed, 21 insertions(+) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 7e7de2f215..2c536d8a20 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -35,6 +35,10 @@ DEFAULTS = { 'default': 'False', 'type': bool }, + 'order_email_asked_twice': { + 'default': 'False', + 'type': bool + }, 'invoice_address_asked': { 'default': 'True', 'type': bool, diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 5dcd649a3c..dbc2b85b52 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -275,6 +275,11 @@ class EventSettingsForm(SettingsForm): required=False, widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_settings-attendee_emails_asked'}), ) + order_email_asked_twice = forms.BooleanField( + label=_("Ask for the order email address twice"), + help_text=_("Require customers to fill in the primary email address twice to avoid errors."), + required=False, + ) max_items_per_order = forms.IntegerField( min_value=1, label=_("Maximum number of items per order"), diff --git a/src/pretix/control/templates/pretixcontrol/event/settings.html b/src/pretix/control/templates/pretixcontrol/event/settings.html index a98cd90833..d75cb458ec 100644 --- a/src/pretix/control/templates/pretixcontrol/event/settings.html +++ b/src/pretix/control/templates/pretixcontrol/event/settings.html @@ -42,6 +42,7 @@ {% bootstrap_field sform.max_items_per_order layout="horizontal" %} {% bootstrap_field sform.attendee_names_asked layout="horizontal" %} {% bootstrap_field sform.attendee_names_required layout="horizontal" %} + {% bootstrap_field sform.order_email_asked_twice layout="horizontal" %} {% bootstrap_field sform.attendee_emails_asked layout="horizontal" %} {% bootstrap_field sform.attendee_emails_required layout="horizontal" %} {% bootstrap_field sform.cancel_allow_user layout="horizontal" %} diff --git a/src/pretix/presale/forms/checkout.py b/src/pretix/presale/forms/checkout.py index aa3173e707..98d3350e8c 100644 --- a/src/pretix/presale/forms/checkout.py +++ b/src/pretix/presale/forms/checkout.py @@ -26,12 +26,23 @@ class ContactForm(forms.Form): self.event = kwargs.pop('event') super().__init__(*args, **kwargs) + if self.event.settings.order_email_asked_twice: + self.fields['email_repeat'] = forms.EmailField( + label=_('E-mail address (repeated)'), + help_text=_('Please enter the same email address again to make sure you typed it correctly.') + ) + responses = contact_form_fields.send(self.event) for r, response in sorted(responses, key=lambda r: str(r[0])): for key, value in response.items(): # We need to be this explicit, since OrderedDict.update does not retain ordering self.fields[key] = value + def clean(self): + if self.event.settings.order_email_asked_twice: + if self.cleaned_data['email'] != self.cleaned_data['email_repeat']: + raise ValidationError(_('Please enter the same email address twice.')) + class InvoiceAddressForm(forms.ModelForm):