From 54d06dd7f81fbc1cd5b2ef152d18b8edc857ea54 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 12 Jun 2023 10:23:22 +0200 Subject: [PATCH] Customer accounts: Validate duplicate identifier --- src/pretix/control/forms/organizer.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pretix/control/forms/organizer.py b/src/pretix/control/forms/organizer.py index 2f64789b5a..c955551abc 100644 --- a/src/pretix/control/forms/organizer.py +++ b/src/pretix/control/forms/organizer.py @@ -790,6 +790,7 @@ class ReusableMediumCreateForm(ReusableMediumUpdateForm): class CustomerUpdateForm(forms.ModelForm): error_messages = { + 'duplicate_identifier': _("An account with this customer ID is already registered."), 'duplicate': _("An account with this email address is already registered."), } @@ -824,6 +825,7 @@ class CustomerUpdateForm(forms.ModelForm): def clean(self): email = self.cleaned_data.get('email') + identifier = self.cleaned_data.get('identifier') if email is not None: try: @@ -836,6 +838,17 @@ class CustomerUpdateForm(forms.ModelForm): code='duplicate', ) + if identifier is not None: + try: + self.instance.organizer.customers.exclude(pk=self.instance.pk).get(identifier=identifier) + except Customer.DoesNotExist: + pass + else: + raise forms.ValidationError( + self.error_messages['duplicate_identifier'], + code='duplicate_identifier', + ) + return self.cleaned_data