diff --git a/cookbook/templates/settings.html b/cookbook/templates/settings.html
index b4bab61a..db2b84d5 100644
--- a/cookbook/templates/settings.html
+++ b/cookbook/templates/settings.html
@@ -19,7 +19,13 @@
+
+
@@ -41,7 +47,7 @@
{% endfor %}
-
+
diff --git a/cookbook/views/views.py b/cookbook/views/views.py
index cb36a996..59d94a2e 100644
--- a/cookbook/views/views.py
+++ b/cookbook/views/views.py
@@ -3,7 +3,9 @@ import re
from datetime import datetime, timedelta
from django.contrib import messages
+from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.decorators import login_required
+from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, get_object_or_404
from django_tables2 import RequestConfig
from django.utils.translation import gettext as _
@@ -161,26 +163,35 @@ def settings(request):
except UserPreference.DoesNotExist:
up = None
- if request.method == "POST":
- form = UserPreferenceForm(request.POST, prefix='preference')
- if form.is_valid():
- if not up:
- up = UserPreference(user=request.user)
- up.theme = form.cleaned_data['theme']
- up.nav_color = form.cleaned_data['nav_color']
- up.save()
+ user_name_form = UserNameForm(instance=request.user)
+ password_form = PasswordChangeForm(request.user)
- form = UserNameForm(request.POST, prefix='name')
- if form.is_valid():
- request.user.first_name = form.cleaned_data['first_name']
- request.user.last_name = form.cleaned_data['last_name']
- request.user.save()
+ if request.method == "POST":
+ if 'preference_form' in request.POST:
+ form = UserPreferenceForm(request.POST, prefix='preference')
+ if form.is_valid():
+ if not up:
+ up = UserPreference(user=request.user)
+ up.theme = form.cleaned_data['theme']
+ up.nav_color = form.cleaned_data['nav_color']
+ up.save()
+
+ if 'user_name_form' in request.POST:
+ user_name_form = UserNameForm(request.POST, prefix='name')
+ if user_name_form.is_valid():
+ request.user.first_name = user_name_form.cleaned_data['first_name']
+ request.user.last_name = user_name_form.cleaned_data['last_name']
+ request.user.save()
+
+ if 'password_form' in request.POST:
+ password_form = PasswordChangeForm(request.user, request.POST)
+ if password_form.is_valid():
+ user = password_form.save()
+ update_session_auth_hash(request, user)
if up:
preference_form = UserPreferenceForm(instance=up)
else:
preference_form = UserPreferenceForm()
- user_name_form = UserNameForm(instance=request.user)
-
- return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form})
+ return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form, 'password_form': password_form})