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

+
{% csrf_token %} + {{ form.as_p }} +
+ +
+{% 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