LIL-68 Added registration page

remotes/origin/hasaccess
Sergey G 8 years ago
parent 95851f3a11
commit 513166847c
  1. 0
      apps/__init__.py
  2. 0
      apps/auth/__init__.py
  3. 3
      apps/auth/admin.py
  4. 6
      apps/auth/apps.py
  5. 8
      apps/auth/forms.py
  6. 0
      apps/auth/migrations/__init__.py
  7. 3
      apps/auth/models.py
  8. 10
      apps/auth/templates/auth/registration-learner.html
  9. 0
      apps/auth/tests/__init__.py
  10. 47
      apps/auth/tests/test_registration.py
  11. 7
      apps/auth/urls.py
  12. 26
      apps/auth/views.py
  13. 2
      project/settings.py
  14. 3
      project/urls.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,6 @@
from django.apps import AppConfig
class AuthConfig(AppConfig):
name = 'apps.auth'
label = 'lilcity_auth'

@ -0,0 +1,8 @@
from django import forms
class LearnerRegistrationForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
email = forms.EmailField()
password = forms.CharField()

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>

@ -0,0 +1,47 @@
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth import get_user_model
User = get_user_model()
class LearnerRegistrationTest(TestCase):
def setUp(self):
self.client = Client()
self.url = reverse("lilcity:registration-learner")
self.user_data = {
"email": "test@example.com",
"first_name": "Alice",
"last_name": "T",
"password": "12345"
}
def test_get_html_form(self):
response = self.client.get(self.url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.templates[0].name, 'auth/registration-learner.html')
def test_should_create_user(self):
self.assertEqual(User.objects.count(), 0)
response = self.client.post(self.url, self.user_data)
self.assertEqual(response.status_code, 201)
self.assertTrue(response.json()['success'])
user = User.objects.get(email=self.user_data['email'])
self.assertEqual(user.username, self.user_data['email'])
self.assertEqual(user.first_name, self.user_data['first_name'])
self.assertEqual(user.last_name, self.user_data['last_name'])
def test_invalid_data(self):
del self.user_data['email']
response = self.client.post(self.url, self.user_data)
self.assertEqual(response.status_code, 400)
self.assertIn('email', response.json())
def test_should_redirect_main_page_when_user_not_anonymous(self): # todo
pass

@ -0,0 +1,7 @@
from django.urls import path
from . import views
urlpatterns = [
path('registration/learner/', views.LearnerRegistrationView.as_view(), name="registration-learner")
]

@ -0,0 +1,26 @@
from django.views.generic import FormView
from django.http import JsonResponse
from django.contrib.auth import get_user_model
from .forms import LearnerRegistrationForm
User = get_user_model()
class LearnerRegistrationView(FormView):
form_class = LearnerRegistrationForm
template_name = "auth/registration-learner.html"
def form_valid(self, form):
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
email = form.cleaned_data['email']
password = form.cleaned_data['password']
User.objects.create(username=email, email=email, first_name=first_name, last_name=last_name, password=password)
return JsonResponse({"success": True}, status=201)
def form_invalid(self, form):
return JsonResponse(form.errors.get_json_data(escape_html=True), status=400)

@ -37,6 +37,8 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
] + [
'apps.auth.apps'
]
MIDDLEWARE = [

@ -14,8 +14,9 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include(('apps.auth.urls', 'lilcity'))),
]

Loading…
Cancel
Save