From a240d7cad5bd06a9ba0638400e005c7e09720176 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Mon, 10 Apr 2023 09:56:16 +0200 Subject: [PATCH] Better unique validation errors Signed-off-by: Emmy D'Anello --- participation/forms.py | 4 ++-- registration/forms.py | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/participation/forms.py b/participation/forms.py index 775422c..e7848c7 100644 --- a/participation/forms.py +++ b/participation/forms.py @@ -26,7 +26,7 @@ class TeamForm(forms.ModelForm): def clean_name(self): if "name" in self.cleaned_data: name = self.cleaned_data["name"] - if not self.instance.pk and Team.objects.filter(name=name).exists(): + if Team.objects.filter(name=name).exclude(pk=self.instance.pk).exists(): raise ValidationError(_("This name is already used.")) return name @@ -36,7 +36,7 @@ class TeamForm(forms.ModelForm): if not re.match("[A-Z]{3}", trigram): raise ValidationError(_("The trigram must be composed of three uppercase letters.")) - if not self.instance.pk and Team.objects.filter(trigram=trigram).exists(): + if Team.objects.filter(trigram=trigram).exclude(pk=self.instance.pk).exists(): raise ValidationError(_("This trigram is already used.")) return trigram diff --git a/registration/forms.py b/registration/forms.py index ae67080..4416a35 100644 --- a/registration/forms.py +++ b/registration/forms.py @@ -82,6 +82,15 @@ class UserForm(forms.ModelForm): self.fields["last_name"].required = True self.fields["email"].required = True + def clean_email(self): + """ + Ensure that the email address is unique. + """ + email = self.data["email"] + if User.objects.filter(email=email).exclude(pk=self.instance.pk).exists(): + self.add_error("email", _("This email address is already used.")) + return email + class Meta: model = User fields = ('first_name', 'last_name', 'email',)