Skip to content

Commit 1068b3f

Browse files
committed
Fix the registration form
1 parent 2aaaba5 commit 1068b3f

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

hyperkitty/tests/views/test_accounts.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def test_public_profile(self):
7777
self.assertEqual(response.status_code, 200)
7878

7979
@override_settings(USE_INTERNAL_AUTH=True)
80-
def test_registration(self):
80+
def test_registration_redirect(self):
8181
self.client.login(username='testuser', password='testPass')
8282
# If the user if already logged in, redirect to index page...
8383
# Don't let him register again
@@ -89,7 +89,17 @@ def test_registration(self):
8989
self.client.logout()
9090
response = self.client.get(reverse('hk_user_registration'))
9191
self.assertEqual(response.status_code, 200)
92-
# @TODO: Try to register a user and verify its working
92+
93+
@override_settings(USE_INTERNAL_AUTH=True)
94+
def test_registration(self):
95+
response = self.client.get(reverse('hk_user_registration'))
96+
self.assertEqual(response.status_code, 200)
97+
response = self.client.post(reverse("hk_user_registration"),
98+
{"email": "newtestuser@example.com",
99+
"password1": "test", "password2": "test"})
100+
self.assertRedirects(response, reverse('hk_root'))
101+
response = self.client.get(reverse('hk_root'))
102+
self.assertContains(response, "newtestuser@example.com")
93103

94104
def test_votes(self):
95105
self.client.login(username='testuser', password='testPass')

hyperkitty/views/accounts.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ def user_registration(request):
154154
form = RegistrationForm(request.POST)
155155
if form.is_valid():
156156
user = form.save()
157+
user.backend = "django.contrib.auth.backends.ModelBackend"
157158
logger.info("New registered user: %s", user.username)
158159
if user.is_active:
159160
login(request, user)

hyperkitty/views/forms.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,13 @@
3737

3838
class RegistrationForm(UserCreationForm):
3939

40-
email = forms.EmailField(required=True)
40+
username = forms.CharField(required=False, widget=forms.HiddenInput())
41+
email = forms.EmailField(required=True)
4142

4243
class Meta: # pylint: disable=no-init
4344
model = User
44-
fields = ("email", )
45+
fields = ["email"]
46+
exclude = ["username"]
4547

4648
def __init__(self, *args, **kwargs):
4749
super(RegistrationForm, self).__init__(*args, **kwargs)
@@ -53,10 +55,6 @@ def __init__(self, *args, **kwargs):
5355
self.helper.field_class = 'col-sm-6 col-md-5 col-lg-4'
5456
self.helper.add_input(Submit('submit', _('Register'), css_class="col-sm-offset-6"))
5557

56-
def clean_username(self):
57-
self.cleaned_data["username"] = self.cleaned_data["email"]
58-
return super(RegistrationForm, self).clean_username()
59-
6058
def clean_email(self):
6159
email = self.cleaned_data["email"]
6260
try:
@@ -68,6 +66,14 @@ def clean_email(self):
6866
code='duplicate_email',
6967
)
7068

69+
def save(self, commit=True):
70+
# Use the email as username
71+
user = super(RegistrationForm, self).save(commit=False)
72+
user.username = self.cleaned_data["email"]
73+
if commit:
74+
user.save()
75+
return user
76+
7177

7278
class InternalAuthenticationForm(AuthenticationForm):
7379

0 commit comments

Comments
 (0)