Add registration form

This commit is contained in:
Gergely Polonkai 2015-01-12 16:51:54 +01:00 committed by Gergely Polonkai
parent 8c9475d076
commit 5e23c73594
8 changed files with 104 additions and 1 deletions

View File

@ -0,0 +1,10 @@
{% extends 'front_template.html' %}
{% block body %}
<p>For later convenience, please use your corporate ID as the username!</p>
<form method="post" action="{% url 'accounts:register' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}

51
accounts/tests.py Normal file
View File

@ -0,0 +1,51 @@
from django.test import TestCase, Client
from django_webtest import WebTest
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class FrontTest(TestCase):
def setUp(self):
self.client = Client()
def test_registration_page(self):
response = self.client.get('/accounts/register')
self.assertEqual(response.status_code, 200)
class RegFormTest(WebTest):
def test_valid_data(self):
form_data = {
'username': 'test',
'password1': 'password',
'password2': 'password'
}
form = UserCreationForm(form_data)
self.assertTrue(form.is_valid())
user = form.save()
self.assertEqual(user.username, 'test')
# The password must be encrypted by now
self.assertNotEqual(user.password, 'password')
def test_empty(self):
form_data = {}
form = UserCreationForm(form_data)
self.assertFalse(form.is_valid())
self.assertEqual(form.errors, {
'username': ['This field is required.'],
'password1': ['This field is required.'],
'password2': ['This field is required.'],
})
def test_form_error(self):
page = self.app.get('/accounts/register')
page = page.form.submit()
self.assertContains(page, "This field is required.")
def test_form_success(self):
page = self.app.get('/accounts/register')
page.form['username'] = 'test'
page.form['password1'] = 'password'
page.form['password2'] = 'password'
page = page.form.submit()
self.assertRedirects(page, '/')

12
accounts/urls.py Normal file
View File

@ -0,0 +1,12 @@
from django.conf.urls import patterns, url
from .views import RegistrationFormView
urlpatterns = patterns(
'',
url(
r'^register$',
RegistrationFormView.as_view(),
name = 'register'
),
)

23
accounts/views.py Normal file
View File

@ -0,0 +1,23 @@
from django.shortcuts import render
from django.views import generic
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth.forms import UserCreationForm
class RegistrationFormView(generic.View):
form_class = UserCreationForm
template_name = 'accounts/registration.html'
def get(self, request):
form = self.form_class()
return render(request, self.template_name, { 'form': form })
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('booking:index'))
return render(request, self.template_name, {'form': form})

View File

@ -5,6 +5,9 @@
</head>
<body>
<h1>Rubber Duck Booking Tool</h1>
<div>
<a href="{% url 'accounts:register' %}">Register</a>
</div>
<a href="{% url 'booking:list' %}">Home</a>
<a href="{% url 'booking:terms' %}">Terms and Conditions</a>
<a href="{% url 'booking:vocabulary' %}">Vocabulary</a>

View File

@ -36,6 +36,7 @@ INSTALLED_APPS = (
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts',
'booking',
)

View File

@ -3,5 +3,6 @@ from django.views.generic import TemplateView
urlpatterns = patterns(
'',
url('', include('booking.urls', namespace = 'booking')),
url(r'^accounts/', include('accounts.urls', namespace = 'accounts')),
url('', include('booking.urls', namespace = 'booking')),
)

View File

@ -1 +1,3 @@
Django>=1.7,<1.8
WebTest==2.0.17
django-webtest==1.7.7