From 808764bd2c606bc55967470aabdbbf1c659bebd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 30 Aug 2014 19:53:59 -0700 Subject: [PATCH] possibility to change user password --- accounts/forms.py | 3 +-- accounts/urls.py | 1 + accounts/views.py | 15 +++++++++++++++ templates/accounts/user_details.html | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/accounts/forms.py b/accounts/forms.py index d772a28..712a52c 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -9,8 +9,7 @@ __all__ = ['UserForm', 'GroupForm', 'TeamForm'] UserForm = modelform_factory(User, fields=['username', 'first_name', - 'last_name', 'email', 'is_superuser'], - widgets={'password': PasswordInput}) + 'last_name', 'email', 'is_superuser']) GroupForm = modelform_factory(Group, fields=['name']) TeamForm = modelform_factory(Team, diff --git a/accounts/urls.py b/accounts/urls.py index ec1aa86..bf49057 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -9,6 +9,7 @@ urlpatterns = [ url(r'^admin/users/add/$', 'accounts.views.user_edit', name='add-user'), url(r'^admin/users/(?P[0-9]+)/$', 'accounts.views.user_details', name='show-user'), url(r'^admin/users/(?P[0-9]+)/edit/$', 'accounts.views.user_edit', name='edit-user'), + url(r'^admin/users/(?P[0-9]+)/edit-password/$', 'accounts.views.user_edit_password', name='edit-user-password'), url(r'^admin/users/(?P[0-9]+)/delete/$', 'accounts.views.user_delete', name='delete-user'), url(r'^admin/users/(?P[0-9]+)/activate/$', 'accounts.views.user_activate', name='activate-user'), url(r'^admin/users/(?P[0-9]+)/disable/$', 'accounts.views.user_disable', name='disable-user'), diff --git a/accounts/views.py b/accounts/views.py index bc85b5a..d61cd11 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -1,5 +1,6 @@ from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required +from django.contrib.auth.forms import AdminPasswordChangeForm from django.views.decorators.http import require_http_methods from django.contrib import messages from django.db.models import Q @@ -64,6 +65,20 @@ def user_edit(request, user=None): }) +@project_perm_required('manage_accounts') +def user_edit_password(request, user): + user = get_object_or_404(User, id=user) + form = AdminPasswordChangeForm(user, request.POST or None) + if request.method == 'POST' and form.is_valid(): + form.save() + messages.success(request, 'User password modified successfully.') + return redirect('show-user', user.id) + return render(request, 'accounts/user_edit.html', { + 'user': user, + 'form': form, + }) + + @project_perm_required('manage_accounts') def user_activate(request, user): user = get_object_or_404(User, id=user) diff --git a/templates/accounts/user_details.html b/templates/accounts/user_details.html index 2ea2d5b..fb12c1c 100644 --- a/templates/accounts/user_details.html +++ b/templates/accounts/user_details.html @@ -32,6 +32,7 @@ {% else %} activate {% endif %} + change password edit delete