added password change form

This commit is contained in:
vabene1111 2020-03-18 13:06:39 +01:00
parent 9e524a8f22
commit 1cadb1e85e
2 changed files with 35 additions and 18 deletions

View File

@ -19,7 +19,13 @@
<form action="." method="post"> <form action="." method="post">
{% csrf_token %} {% csrf_token %}
{{ user_name_form|crispy }} {{ user_name_form|crispy }}
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button> <button class="btn btn-success" type="submit" name="user_name_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
</form>
<form action="." method="post">
{% csrf_token %}
{{ password_form|crispy }}
<button class="btn btn-success" type="submit" name="password_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
</form> </form>
<br/> <br/>
@ -41,7 +47,7 @@
{% endfor %} {% endfor %}
</select> </select>
<br/> <br/>
<button class="btn btn-success" type="submit"><i class="fas fa-save"></i> {% trans 'Save' %}</button> <button class="btn btn-success" type="submit" name="preference_form"><i class="fas fa-save"></i> {% trans 'Save' %}</button>
</form> </form>
</div> </div>

View File

@ -3,7 +3,9 @@ import re
from datetime import datetime, timedelta from datetime import datetime, timedelta
from django.contrib import messages 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.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, get_object_or_404 from django.shortcuts import render, get_object_or_404
from django_tables2 import RequestConfig from django_tables2 import RequestConfig
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
@ -161,7 +163,11 @@ def settings(request):
except UserPreference.DoesNotExist: except UserPreference.DoesNotExist:
up = None up = None
user_name_form = UserNameForm(instance=request.user)
password_form = PasswordChangeForm(request.user)
if request.method == "POST": if request.method == "POST":
if 'preference_form' in request.POST:
form = UserPreferenceForm(request.POST, prefix='preference') form = UserPreferenceForm(request.POST, prefix='preference')
if form.is_valid(): if form.is_valid():
if not up: if not up:
@ -170,17 +176,22 @@ def settings(request):
up.nav_color = form.cleaned_data['nav_color'] up.nav_color = form.cleaned_data['nav_color']
up.save() up.save()
form = UserNameForm(request.POST, prefix='name') if 'user_name_form' in request.POST:
if form.is_valid(): user_name_form = UserNameForm(request.POST, prefix='name')
request.user.first_name = form.cleaned_data['first_name'] if user_name_form.is_valid():
request.user.last_name = form.cleaned_data['last_name'] 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() 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: if up:
preference_form = UserPreferenceForm(instance=up) preference_form = UserPreferenceForm(instance=up)
else: else:
preference_form = UserPreferenceForm() 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, 'password_form': password_form})
return render(request, 'settings.html', {'preference_form': preference_form, 'user_name_form': user_name_form})