From 01a6861453aef78c8969dead361eeb7efb2c30c5 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 2 Jan 2019 15:12:48 +0100 Subject: [PATCH] Always query emails case-insensitively --- src/pretix/base/forms/auth.py | 2 +- src/pretix/base/forms/user.py | 2 +- src/pretix/base/models/waitinglist.py | 2 +- src/pretix/control/forms/users.py | 2 +- src/pretix/control/views/auth.py | 2 +- src/pretix/control/views/organizer.py | 4 ++-- src/pretix/presale/views/user.py | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pretix/base/forms/auth.py b/src/pretix/base/forms/auth.py index 41dc4a308c..fb952fe1fb 100644 --- a/src/pretix/base/forms/auth.py +++ b/src/pretix/base/forms/auth.py @@ -120,7 +120,7 @@ class RegistrationForm(forms.Form): def clean_email(self): email = self.cleaned_data['email'] - if User.objects.filter(email=email).exists(): + if User.objects.filter(email__iexact=email).exists(): raise forms.ValidationError( self.error_messages['duplicate_email'], code='duplicate_email' diff --git a/src/pretix/base/forms/user.py b/src/pretix/base/forms/user.py index f7d00dc70a..1fbb00d88e 100644 --- a/src/pretix/base/forms/user.py +++ b/src/pretix/base/forms/user.py @@ -69,7 +69,7 @@ class UserSettingsForm(forms.ModelForm): def clean_email(self): email = self.cleaned_data['email'] - if User.objects.filter(Q(email=email) & ~Q(pk=self.instance.pk)).exists(): + if User.objects.filter(Q(email__iexact=email) & ~Q(pk=self.instance.pk)).exists(): raise forms.ValidationError( self.error_messages['duplicate_identifier'], code='duplicate_identifier', diff --git a/src/pretix/base/models/waitinglist.py b/src/pretix/base/models/waitinglist.py index c2b49883a3..bf283e55b2 100644 --- a/src/pretix/base/models/waitinglist.py +++ b/src/pretix/base/models/waitinglist.py @@ -159,7 +159,7 @@ class WaitingListEntry(LoggedModel): @staticmethod def clean_duplicate(email, item, variation, subevent, pk): if WaitingListEntry.objects.filter( - item=item, variation=variation, email=email, voucher__isnull=True, subevent=subevent + item=item, variation=variation, email__iexact=email, voucher__isnull=True, subevent=subevent ).exclude(pk=pk).exists(): raise ValidationError(_('You are already on this waiting list! We will notify ' 'you as soon as we have a ticket available for you.')) diff --git a/src/pretix/control/forms/users.py b/src/pretix/control/forms/users.py index 8282e917e2..84273e2fec 100644 --- a/src/pretix/control/forms/users.py +++ b/src/pretix/control/forms/users.py @@ -57,7 +57,7 @@ class UserEditForm(forms.ModelForm): def clean_email(self): email = self.cleaned_data['email'] - if User.objects.filter(Q(email=email) & ~Q(pk=self.instance.pk)).exists(): + if User.objects.filter(Q(email__iexact=email) & ~Q(pk=self.instance.pk)).exists(): raise forms.ValidationError( self.error_messages['duplicate_identifier'], code='duplicate_identifier', diff --git a/src/pretix/control/views/auth.py b/src/pretix/control/views/auth.py index 2dbd2c78dd..1d18c3cd49 100644 --- a/src/pretix/control/views/auth.py +++ b/src/pretix/control/views/auth.py @@ -199,7 +199,7 @@ class Forgot(TemplateView): has_redis = settings.HAS_REDIS try: - user = User.objects.get(email=email) + user = User.objects.get(email__iexact=email) if has_redis: from django_redis import get_redis_connection diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 9e956753ee..79d8bdb98c 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -575,9 +575,9 @@ class TeamMemberView(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin, elif "user" in self.request.POST and self.add_form.is_valid() and self.add_form.has_changed(): try: - user = User.objects.get(email=self.add_form.cleaned_data['user']) + user = User.objects.get(email__iexact=self.add_form.cleaned_data['user']) except User.DoesNotExist: - if self.object.invites.filter(email=self.add_form.cleaned_data['user']).exists(): + if self.object.invites.filter(email__iexact=self.add_form.cleaned_data['user']).exists(): messages.error(self.request, _('This user already has been invited for this team.')) return self.get(request, *args, **kwargs) diff --git a/src/pretix/presale/views/user.py b/src/pretix/presale/views/user.py index dd19e36040..b21b044c1c 100644 --- a/src/pretix/presale/views/user.py +++ b/src/pretix/presale/views/user.py @@ -36,7 +36,7 @@ class ResendLinkView(EventViewMixin, TemplateView): else: rc.setex('pretix_resend_{}'.format(user), 3600 * 24, '1') - orders = self.request.event.orders.filter(email=user) + orders = self.request.event.orders.filter(email__iexact=user) order_context = [] for order in orders: