diff --git a/accounts/templates/accounts/registration.html b/accounts/templates/accounts/registration.html new file mode 100644 index 0000000..090190e --- /dev/null +++ b/accounts/templates/accounts/registration.html @@ -0,0 +1,10 @@ +{% extends 'front_template.html' %} + +{% block body %} +
For later convenience, please use your corporate ID as the username!
+ +{% endblock %} diff --git a/accounts/tests.py b/accounts/tests.py new file mode 100644 index 0000000..ca55c41 --- /dev/null +++ b/accounts/tests.py @@ -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, '/') diff --git a/accounts/urls.py b/accounts/urls.py new file mode 100644 index 0000000..6323ee6 --- /dev/null +++ b/accounts/urls.py @@ -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' + ), +) diff --git a/accounts/views.py b/accounts/views.py new file mode 100644 index 0000000..9a97f36 --- /dev/null +++ b/accounts/views.py @@ -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}) diff --git a/booking/templates/front_template.html b/booking/templates/front_template.html index e3ab9f8..7a32326 100644 --- a/booking/templates/front_template.html +++ b/booking/templates/front_template.html @@ -5,6 +5,9 @@