Skip to content

Commit 1cadb1e

Browse files
committed
added password change form
1 parent 9e524a8 commit 1cadb1e

File tree

2 files changed

+35
-18
lines changed

2 files changed

+35
-18
lines changed

cookbook/templates/settings.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@ <h4><i class="fas fa-user-edit fa-fw"></i> {% trans 'Account' %}</h4>
1919
<form action="." method="post">
2020
{% csrf_token %}
2121
{{ user_name_form|crispy }}
22-
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
22+
<button class="btn btn-success" type="submit" name="user_name_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
23+
</form>
24+
25+
<form action="." method="post">
26+
{% csrf_token %}
27+
{{ password_form|crispy }}
28+
<button class="btn btn-success" type="submit" name="password_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
2329
</form>
2430

2531
<br/>
@@ -41,7 +47,7 @@ <h4><i class="fas fa-language fa-fw"></i> {% trans 'Language' %}</h4>
4147
{% endfor %}
4248
</select>
4349
<br/>
44-
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
50+
<button class="btn btn-success" type="submit" name="preference_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
4551
</form>
4652
</div>
4753

cookbook/views/views.py

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
from datetime import datetime, timedelta
44

55
from django.contrib import messages
6+
from django.contrib.auth import update_session_auth_hash
67
from django.contrib.auth.decorators import login_required
8+
from django.contrib.auth.forms import PasswordChangeForm
79
from django.shortcuts import render, get_object_or_404
810
from django_tables2 import RequestConfig
911
from django.utils.translation import gettext as _
@@ -161,26 +163,35 @@ def settings(request):
161163
except UserPreference.DoesNotExist:
162164
up = None
163165

164-
if request.method == "POST":
165-
form = UserPreferenceForm(request.POST, prefix='preference')
166-
if form.is_valid():
167-
if not up:
168-
up = UserPreference(user=request.user)
169-
up.theme = form.cleaned_data['theme']
170-
up.nav_color = form.cleaned_data['nav_color']
171-
up.save()
166+
user_name_form = UserNameForm(instance=request.user)
167+
password_form = PasswordChangeForm(request.user)
172168

173-
form = UserNameForm(request.POST, prefix='name')
174-
if form.is_valid():
175-
request.user.first_name = form.cleaned_data['first_name']
176-
request.user.last_name = form.cleaned_data['last_name']
177-
request.user.save()
169+
if request.method == "POST":
170+
if 'preference_form' in request.POST:
171+
form = UserPreferenceForm(request.POST, prefix='preference')
172+
if form.is_valid():
173+
if not up:
174+
up = UserPreference(user=request.user)
175+
up.theme = form.cleaned_data['theme']
176+
up.nav_color = form.cleaned_data['nav_color']
177+
up.save()
178+
179+
if 'user_name_form' in request.POST:
180+
user_name_form = UserNameForm(request.POST, prefix='name')
181+
if user_name_form.is_valid():
182+
request.user.first_name = user_name_form.cleaned_data['first_name']
183+
request.user.last_name = user_name_form.cleaned_data['last_name']
184+
request.user.save()
185+
186+
if 'password_form' in request.POST:
187+
password_form = PasswordChangeForm(request.user, request.POST)
188+
if password_form.is_valid():
189+
user = password_form.save()
190+
update_session_auth_hash(request, user)
178191

179192
if up:
180193
preference_form = UserPreferenceForm(instance=up)
181194
else:
182195
preference_form = UserPreferenceForm()
183196

184-
user_name_form = UserNameForm(instance=request.user)
185-
186-
return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form})
197+
return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form, 'password_form': password_form})

0 commit comments

Comments
 (0)