validate username (email) at registration
authorJan Szejko <janek37@gmail.com>
Tue, 14 Feb 2017 12:00:35 +0000 (13:00 +0100)
committerJan Szejko <janek37@gmail.com>
Tue, 14 Feb 2017 12:00:35 +0000 (13:00 +0100)
redakcja/forms.py

index 16ad87e..0d21bb3 100644 (file)
@@ -4,6 +4,8 @@
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
 from django import forms
+from django.utils.translation import ugettext as _
+from django.contrib.auth.models import User
 
 
 class RegistrationForm(forms.Form):
@@ -11,3 +13,12 @@ class RegistrationForm(forms.Form):
     last_name = forms.CharField()
     email = forms.EmailField()
     password = forms.CharField(widget=forms.PasswordInput)
+
+    def clean_email(self):
+        max_length = User._meta.get_field('username').max_length
+        email = self.cleaned_data['email']
+        if User.objects.filter(username=email).exists():
+            raise forms.ValidationError(_('User with this email address already exists.'))
+        if len(email) > max_length:
+            raise forms.ValidationError(_('Username too long. Max length: %s') % max_length)
+        return email