From 2db323f74de0e5d1dbd4fb0fd430ca26486b36ce Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 1/7] inital commit for signup added a basic app using the UserCreationForm to create new user at /accounts/signup/ change outside of the app are: -added signup to INSTALLED_APPS in /photo21/settings.py -added accounts/signup/ to path in /photo21/urls.py should extend UserCreationForm to have field for email and maybe first/last names, except if we want the user to add that themselves later --- photo21/settings.py | 1 + photo21/urls.py | 1 + signup/apps.py | 4 ++++ signup/settings.py | 8 ++++++++ signup/templates/signup.html | 9 +++++++++ signup/urls.py | 5 +++++ signup/views.py | 19 +++++++++++++++++++ 7 files changed, 47 insertions(+) create mode 100644 signup/apps.py create mode 100644 signup/settings.py create mode 100644 signup/templates/signup.html create mode 100644 signup/urls.py create mode 100644 signup/views.py diff --git a/photo21/settings.py b/photo21/settings.py index 3cdb9d1..98510c0 100644 --- a/photo21/settings.py +++ b/photo21/settings.py @@ -43,6 +43,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'photologue_custom', 'photologue', + 'signup', 'sortedm2m', 'taggit', ] diff --git a/photo21/urls.py b/photo21/urls.py index aacd159..efae970 100644 --- a/photo21/urls.py +++ b/photo21/urls.py @@ -30,6 +30,7 @@ urlpatterns = [ path('i18n/', include('django.conf.urls.i18n')), path('admin/', admin.site.urls), path('admin/doc/', include('django.contrib.admindocs.urls')), + path('accounts/signup/', include('signup.urls')) ] if settings.DEBUG: diff --git a/signup/apps.py b/signup/apps.py new file mode 100644 index 0000000..806582a --- /dev/null +++ b/signup/apps.py @@ -0,0 +1,4 @@ +from django.apps import AppConfig + +class Signup(AppConfig): + name = 'signup' \ No newline at end of file diff --git a/signup/settings.py b/signup/settings.py new file mode 100644 index 0000000..91a0e2c --- /dev/null +++ b/signup/settings.py @@ -0,0 +1,8 @@ +import os +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +TEMPLATES = [ + { + 'DIRS': [os.path.join(BASE_DIR, 'photo21/signup/templates')], + 'APP_DIRS': True, + }, +] \ No newline at end of file diff --git a/signup/templates/signup.html b/signup/templates/signup.html new file mode 100644 index 0000000..82b06fc --- /dev/null +++ b/signup/templates/signup.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} +{% block content %} +

Création d'utilisateur

+
{% csrf_token %} + {{ form }} +
+ +
+{% endblock %} \ No newline at end of file diff --git a/signup/urls.py b/signup/urls.py new file mode 100644 index 0000000..ed10141 --- /dev/null +++ b/signup/urls.py @@ -0,0 +1,5 @@ +from django.urls import path +from .views import signup +urlpatterns = [ + path('', signup, name='signup'), +] diff --git a/signup/views.py b/signup/views.py new file mode 100644 index 0000000..18fc0ce --- /dev/null +++ b/signup/views.py @@ -0,0 +1,19 @@ +from django import forms +from django.contrib.auth import login +from django.http.response import HttpResponse + + +from django.shortcuts import redirect, render +from django.contrib.auth.forms import UserCreationForm +from django.contrib.auth.models import User +def signup(request): + if request.method == 'POST': + form = UserCreationForm(request.POST) + if form.is_valid(): + user = form.save() + login(request, user) + return redirect('/') + return render(request,'signup.html', {'form':form}) + else: + form = UserCreationForm() + return render(request,'signup.html', {'form':form}) \ No newline at end of file From aeb9cafd408f79647db7825153453b8754b30356 Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 2/7] changed form to form.as_p in template for better formating --- signup/templates/signup.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signup/templates/signup.html b/signup/templates/signup.html index 82b06fc..59b8697 100644 --- a/signup/templates/signup.html +++ b/signup/templates/signup.html @@ -2,7 +2,7 @@ {% block content %}

Création d'utilisateur

{% csrf_token %} - {{ form }} + {{ form.as_p }}
From ecc80b939de97dcc7817318b3aab9a8243e5005c Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 3/7] extended UserCreationForm to RegistrationForm, adding fields for email/firstname/lastname --- signup/forms.py | 12 ++++++++++++ signup/views.py | 10 ++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 signup/forms.py diff --git a/signup/forms.py b/signup/forms.py new file mode 100644 index 0000000..7586d28 --- /dev/null +++ b/signup/forms.py @@ -0,0 +1,12 @@ +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"] \ No newline at end of file diff --git a/signup/views.py b/signup/views.py index 18fc0ce..bedea06 100644 --- a/signup/views.py +++ b/signup/views.py @@ -4,16 +4,18 @@ from django.http.response import HttpResponse from django.shortcuts import redirect, render -from django.contrib.auth.forms import UserCreationForm -from django.contrib.auth.models import User +from .forms import RegistrationForm def signup(request): if request.method == 'POST': - form = UserCreationForm(request.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,'signup.html', {'form':form}) else: - form = UserCreationForm() + form = RegistrationForm() return render(request,'signup.html', {'form':form}) \ No newline at end of file From 4ab42bf3dee3a540785da3b8ab4a5d77dd80380c Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 4/7] fixed linting errors --- signup/forms.py | 9 +++++---- signup/templates/signup.html | 2 +- signup/urls.py | 1 + signup/views.py | 11 +++++------ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/signup/forms.py b/signup/forms.py index 7586d28..3b34969 100644 --- a/signup/forms.py +++ b/signup/forms.py @@ -2,11 +2,12 @@ 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) + 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"] \ No newline at end of file + fields = ["username", "password1", "password2", "email", "first_name", "last_name"] diff --git a/signup/templates/signup.html b/signup/templates/signup.html index 59b8697..c62b66e 100644 --- a/signup/templates/signup.html +++ b/signup/templates/signup.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block content %}

Création d'utilisateur

-
{% csrf_token %} +{% csrf_token %} {{ form.as_p }}
diff --git a/signup/urls.py b/signup/urls.py index ed10141..36b8346 100644 --- a/signup/urls.py +++ b/signup/urls.py @@ -1,4 +1,5 @@ from django.urls import path + from .views import signup urlpatterns = [ path('', signup, name='signup'), diff --git a/signup/views.py b/signup/views.py index bedea06..e628198 100644 --- a/signup/views.py +++ b/signup/views.py @@ -1,10 +1,9 @@ -from django import forms from django.contrib.auth import login -from django.http.response import HttpResponse - - from django.shortcuts import redirect, render + from .forms import RegistrationForm + + def signup(request): if request.method == 'POST': form = RegistrationForm(request.POST) @@ -15,7 +14,7 @@ def signup(request): user.email = form.cleaned_data.get('email') login(request, user) return redirect('/') - return render(request,'signup.html', {'form':form}) + return render(request, 'signup.html', {'form': form}) else: form = RegistrationForm() - return render(request,'signup.html', {'form':form}) \ No newline at end of file + return render(request, 'signup.html', {'form': form}) From d8853cee1cc47903367820dfe29732d6756b346b Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 5/7] changed signup to accounts finished fixing linting --- accounts/apps.py | 5 +++++ {signup => accounts}/forms.py | 0 {signup => accounts}/settings.py | 4 ++-- {signup => accounts}/templates/signup.html | 0 {signup => accounts}/urls.py | 2 +- {signup => accounts}/views.py | 0 photo21/middleware.py | 1 + photo21/settings.py | 2 +- photo21/urls.py | 3 +-- signup/apps.py | 4 ---- tox.ini | 4 ++-- 11 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 accounts/apps.py rename {signup => accounts}/forms.py (100%) rename {signup => accounts}/settings.py (64%) rename {signup => accounts}/templates/signup.html (100%) rename {signup => accounts}/urls.py (65%) rename {signup => accounts}/views.py (100%) delete mode 100644 signup/apps.py 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/signup/forms.py b/accounts/forms.py similarity index 100% rename from signup/forms.py rename to accounts/forms.py diff --git a/signup/settings.py b/accounts/settings.py similarity index 64% rename from signup/settings.py rename to accounts/settings.py index 91a0e2c..16e4aa7 100644 --- a/signup/settings.py +++ b/accounts/settings.py @@ -2,7 +2,7 @@ import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATES = [ { - 'DIRS': [os.path.join(BASE_DIR, 'photo21/signup/templates')], + 'DIRS': [os.path.join(BASE_DIR, 'photo21/accounts/templates')], 'APP_DIRS': True, }, -] \ No newline at end of file +] diff --git a/signup/templates/signup.html b/accounts/templates/signup.html similarity index 100% rename from signup/templates/signup.html rename to accounts/templates/signup.html diff --git a/signup/urls.py b/accounts/urls.py similarity index 65% rename from signup/urls.py rename to accounts/urls.py index 36b8346..982cdca 100644 --- a/signup/urls.py +++ b/accounts/urls.py @@ -2,5 +2,5 @@ from django.urls import path from .views import signup urlpatterns = [ - path('', signup, name='signup'), + path('', signup, name='accounts'), ] diff --git a/signup/views.py b/accounts/views.py similarity index 100% rename from signup/views.py rename to accounts/views.py 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 98510c0..bda42a0 100644 --- a/photo21/settings.py +++ b/photo21/settings.py @@ -43,7 +43,7 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'photologue_custom', 'photologue', - 'signup', + 'accounts', 'sortedm2m', 'taggit', ] diff --git a/photo21/urls.py b/photo21/urls.py index efae970..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,7 +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/signup/', include('signup.urls')) + path('accounts/registration/', include('accounts.urls')) ] if settings.DEBUG: diff --git a/signup/apps.py b/signup/apps.py deleted file mode 100644 index 806582a..0000000 --- a/signup/apps.py +++ /dev/null @@ -1,4 +0,0 @@ -from django.apps import AppConfig - -class Signup(AppConfig): - name = 'signup' \ No newline at end of file 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 From 6030bd59491c58a4a5020f6b9cb8b1ad7db31dde Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 6/7] fixed template path and deleted settings.py as it was no longer need changed accounts/signup.html to accounts/registration.html --- accounts/settings.py | 8 -------- .../templates/{signup.html => accounts/registration.html} | 0 accounts/views.py | 4 ++-- 3 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 accounts/settings.py rename accounts/templates/{signup.html => accounts/registration.html} (100%) diff --git a/accounts/settings.py b/accounts/settings.py deleted file mode 100644 index 16e4aa7..0000000 --- a/accounts/settings.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -TEMPLATES = [ - { - 'DIRS': [os.path.join(BASE_DIR, 'photo21/accounts/templates')], - 'APP_DIRS': True, - }, -] diff --git a/accounts/templates/signup.html b/accounts/templates/accounts/registration.html similarity index 100% rename from accounts/templates/signup.html rename to accounts/templates/accounts/registration.html diff --git a/accounts/views.py b/accounts/views.py index e628198..df26fd4 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -14,7 +14,7 @@ def signup(request): user.email = form.cleaned_data.get('email') login(request, user) return redirect('/') - return render(request, 'signup.html', {'form': form}) + return render(request, 'accounts/registration.html', {'form': form}) else: form = RegistrationForm() - return render(request, 'signup.html', {'form': form}) + return render(request, 'accounts/registration.html', {'form': form}) From f8f017d1f89b051b291d52a6e0a09685db1355ed Mon Sep 17 00:00:00 2001 From: aeltheos Date: Thu, 7 Oct 2021 16:50:35 +0200 Subject: [PATCH 7/7] fixed name in url patterns --- accounts/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accounts/urls.py b/accounts/urls.py index 982cdca..3e07455 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -2,5 +2,5 @@ from django.urls import path from .views import signup urlpatterns = [ - path('', signup, name='accounts'), + path('', signup, name='registration'), ]