Skip to content
This repository has been archived by the owner on May 7, 2019. It is now read-only.

Commit

Permalink
Added user registration
Browse files Browse the repository at this point in the history
  • Loading branch information
nylar committed May 21, 2015
1 parent ce05b46 commit ad4f805
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 2 deletions.
9 changes: 9 additions & 0 deletions users/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm


class UserRegisterForm(UserCreationForm):

class Meta:
model = get_user_model()
fields = ["username", "password1", "password2"]
5 changes: 5 additions & 0 deletions users/templates/users/user_register.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Register" class="btn btn-green" />
</form>
4 changes: 4 additions & 0 deletions users/tests/test_urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ def test_user_profile_url(self):
response = self.client.get(
reverse('users:profile', kwargs={'username': u.username}))
self.assertEqual(response.status_code, 200)

def test_register_url(self):
response = self.client.get(reverse('users:register'))
self.assertEqual(response.status_code, 200)
37 changes: 36 additions & 1 deletion users/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from django.core.urlresolvers import reverse
from django.contrib.auth import get_user_model
from django.test import RequestFactory
from fora.tests.base import BaseTestCase
from users.views import UserProfileView
from users.views import UserProfileView, UserRegisterView


class UserProfileViewTestCase(BaseTestCase):
Expand All @@ -16,3 +17,37 @@ def test_get_user_profile_view(self):
response = UserProfileView.as_view()(
request, username=self.user.username)
response.render()

self.assertEqual(response.status_code, 200)
self.assertIn(self.user.username, response.content)


class UserRegisterViewTestCase(BaseTestCase):

def setUp(self):
self.factory = RequestFactory()
super(UserRegisterViewTestCase, self).setUp()

def test_get_user_register_view(self):
request = self.factory.get('/')
response = UserRegisterView.as_view()(request)
response.render()

self.assertEqual(response.status_code, 200)
self.assertIn('<label for="id_username">', response.content)
self.assertIn('<label for="id_password1">', response.content)
self.assertIn('<label for="id_password2">', response.content)

def test_post_user_register_view(self):
request = self.factory.post(reverse('users:register'), data={
'username': 'admin',
'password1': 'secret',
'password2': 'secret',
})
response = UserRegisterView.as_view()(request)

u = get_user_model().objects.get(username='admin')

self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse(
'users:profile', kwargs={'username': u.username}))
7 changes: 6 additions & 1 deletion users/urls.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
from django.conf.urls import url
from users.views import UserProfileView
from users.views import UserProfileView, UserRegisterView


urlpatterns = [
url(
r'^register/$',
UserRegisterView.as_view(),
name='register'
),
url(
r'^(?P<username>[\w-]+)/$',
UserProfileView.as_view(),
Expand Down
12 changes: 12 additions & 0 deletions users/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView
from users.forms import UserRegisterForm


class UserProfileView(DetailView):
Expand All @@ -10,3 +13,12 @@ class UserProfileView(DetailView):
def get_object(self):
return get_object_or_404(
get_user_model(), username=self.kwargs.get('username'))


class UserRegisterView(CreateView):
form_class = UserRegisterForm
template_name = 'users/user_register.html'

def get_success_url(self):
return reverse('users:profile', kwargs={
'username': self.object.username})

0 comments on commit ad4f805

Please sign in to comment.