|
3 | 3 | from datetime import datetime, timedelta
|
4 | 4 |
|
5 | 5 | from django.contrib import messages
|
| 6 | +from django.contrib.auth import update_session_auth_hash |
6 | 7 | from django.contrib.auth.decorators import login_required
|
| 8 | +from django.contrib.auth.forms import PasswordChangeForm |
7 | 9 | from django.shortcuts import render, get_object_or_404
|
8 | 10 | from django_tables2 import RequestConfig
|
9 | 11 | from django.utils.translation import gettext as _
|
@@ -161,26 +163,35 @@ def settings(request):
|
161 | 163 | except UserPreference.DoesNotExist:
|
162 | 164 | up = None
|
163 | 165 |
|
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) |
172 | 168 |
|
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) |
178 | 191 |
|
179 | 192 | if up:
|
180 | 193 | preference_form = UserPreferenceForm(instance=up)
|
181 | 194 | else:
|
182 | 195 | preference_form = UserPreferenceForm()
|
183 | 196 |
|
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