diff --git a/accounts/apps.py b/accounts/apps.py
new file mode 100644
index 0000000..c0bd956
--- /dev/null
+++ b/accounts/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class Accounts(AppConfig):
+ name = 'accounts'
diff --git a/accounts/forms.py b/accounts/forms.py
new file mode 100644
index 0000000..3b34969
--- /dev/null
+++ b/accounts/forms.py
@@ -0,0 +1,13 @@
+from django import forms
+from django.contrib.auth.forms import UserCreationForm
+from django.contrib.auth.models import User
+
+
+class RegistrationForm(UserCreationForm):
+ email = forms.EmailField(label="Email", widget=forms.TextInput(), required=True)
+ first_name = forms.CharField(label="Prénom", widget=forms.TextInput(), required=True)
+ last_name = forms.CharField(label="Nom", widget=forms.TextInput(), required=True)
+
+ class Meta:
+ model = User
+ fields = ["username", "password1", "password2", "email", "first_name", "last_name"]
diff --git a/accounts/templates/accounts/registration.html b/accounts/templates/accounts/registration.html
new file mode 100644
index 0000000..c62b66e
--- /dev/null
+++ b/accounts/templates/accounts/registration.html
@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% block content %}
+
Création d'utilisateur
+
+{% endblock %}
\ No newline at end of file
diff --git a/accounts/urls.py b/accounts/urls.py
new file mode 100644
index 0000000..3e07455
--- /dev/null
+++ b/accounts/urls.py
@@ -0,0 +1,6 @@
+from django.urls import path
+
+from .views import signup
+urlpatterns = [
+ path('', signup, name='registration'),
+]
diff --git a/accounts/views.py b/accounts/views.py
new file mode 100644
index 0000000..df26fd4
--- /dev/null
+++ b/accounts/views.py
@@ -0,0 +1,20 @@
+from django.contrib.auth import login
+from django.shortcuts import redirect, render
+
+from .forms import RegistrationForm
+
+
+def signup(request):
+ if request.method == 'POST':
+ form = RegistrationForm(request.POST)
+ if form.is_valid():
+ user = form.save()
+ user.first_name = form.cleaned_data.get('first_name')
+ user.last_name = form.cleaned_data.get('last_name')
+ user.email = form.cleaned_data.get('email')
+ login(request, user)
+ return redirect('/')
+ return render(request, 'accounts/registration.html', {'form': form})
+ else:
+ form = RegistrationForm()
+ return render(request, 'accounts/registration.html', {'form': form})
diff --git a/photo21/middleware.py b/photo21/middleware.py
index 230e373..88ad41c 100644
--- a/photo21/middleware.py
+++ b/photo21/middleware.py
@@ -1,5 +1,6 @@
from django.http import HttpResponseRedirect
from django.conf import settings
+
import ipaddress
import re
diff --git a/photo21/settings.py b/photo21/settings.py
index 3cdb9d1..bda42a0 100644
--- a/photo21/settings.py
+++ b/photo21/settings.py
@@ -43,6 +43,7 @@ INSTALLED_APPS = [
'django.contrib.staticfiles',
'photologue_custom',
'photologue',
+ 'accounts',
'sortedm2m',
'taggit',
]
diff --git a/photo21/urls.py b/photo21/urls.py
index aacd159..3b4a601 100644
--- a/photo21/urls.py
+++ b/photo21/urls.py
@@ -17,7 +17,6 @@ from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
-from django.contrib.auth.decorators import login_required
from .views import IndexView
@@ -30,6 +29,7 @@ urlpatterns = [
path('i18n/', include('django.conf.urls.i18n')),
path('admin/', admin.site.urls),
path('admin/doc/', include('django.contrib.admindocs.urls')),
+ path('accounts/registration/', include('accounts.urls'))
]
if settings.DEBUG:
diff --git a/tox.ini b/tox.ini
index 30d8c12..03d6b2a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -18,7 +18,7 @@ deps =
-r{toxinidir}/requirements.txt
coverage
commands =
- coverage run --omit='photo21/wsgi.py' --source=photo21,photologue_custom ./manage.py test
+ coverage run --omit='photo21/wsgi.py' --source=photo21,photologue_custom,accounts ./manage.py test
coverage report -m
[testenv:linters]
@@ -32,7 +32,7 @@ deps =
pep8-naming
pyflakes
commands =
- flake8 photo21 photologue_custom
+ flake8 photo21 photologue_custom accounts
[flake8]
ignore = W503, I100, I101