diff --git a/djadmin2/core.py b/djadmin2/core.py index 084135e..2650957 100644 --- a/djadmin2/core.py +++ b/djadmin2/core.py @@ -125,7 +125,7 @@ class Admin2(object): view=self.index_view.as_view(**self.get_index_kwargs()), name='dashboard' ), - url(regex='^password_change/$', + url(regex='^auth/user/(?P\d+)/update/password/$', view=views.PasswordChangeView.as_view(), name='password-change' ), diff --git a/djadmin2/templates/admin2/bootstrap/auth/password_change_form.html b/djadmin2/templates/admin2/bootstrap/auth/password_change_form.html index 5202587..2439614 100644 --- a/djadmin2/templates/admin2/bootstrap/auth/password_change_form.html +++ b/djadmin2/templates/admin2/bootstrap/auth/password_change_form.html @@ -3,11 +3,12 @@ {% load i18n %} {% load admin2_tags %} -{% block page_title %}{% trans "Password change" %}{% endblock %} +{% block page_title %}{% trans "Password change" %}: {{ form.user }}{% endblock %} {% block breadcrumbs %}
  • Home /
  • -
  • {% trans "Password change" %}
  • +
  • {% trans "Password change" %} /
  • +
  • {{ form.user }}
  • {% endblock %} {% block content %} diff --git a/djadmin2/templates/admin2/bootstrap/base.html b/djadmin2/templates/admin2/bootstrap/base.html index 14df291..56bb8dd 100644 --- a/djadmin2/templates/admin2/bootstrap/base.html +++ b/djadmin2/templates/admin2/bootstrap/base.html @@ -36,7 +36,7 @@ diff --git a/djadmin2/tests/test_core.py b/djadmin2/tests/test_core.py index df549fc..19634ee 100644 --- a/djadmin2/tests/test_core.py +++ b/djadmin2/tests/test_core.py @@ -32,4 +32,4 @@ class Admin2Test(TestCase): def test_get_urls(self): self.admin2.register(Thing) - self.assertEquals(7, len(self.admin2.get_urls())) + self.assertEquals(8, len(self.admin2.get_urls())) diff --git a/djadmin2/viewmixins.py b/djadmin2/viewmixins.py index 2cca6d5..2fa9f22 100644 --- a/djadmin2/viewmixins.py +++ b/djadmin2/viewmixins.py @@ -5,7 +5,7 @@ from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse, reverse_lazy from django.forms.models import modelform_factory from django.http import HttpResponseRedirect -from braces.views import (AccessMixin) +from braces.views import AccessMixin from . import constants, permissions from .utils import admin2_urlname, model_options diff --git a/djadmin2/views.py b/djadmin2/views.py index 810fbdb..060d057 100644 --- a/djadmin2/views.py +++ b/djadmin2/views.py @@ -1,5 +1,6 @@ from django.contrib.admin.forms import AdminAuthenticationForm -from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth.forms import (PasswordChangeForm, + AdminPasswordChangeForm) from django.contrib.auth.views import (logout as auth_logout, login as auth_login) from django.contrib.auth import get_user_model @@ -139,7 +140,8 @@ class ModelDeleteView(AdminModel2Mixin, generic.DeleteView): class PasswordChangeView(Admin2Mixin, LoginRequiredMixin, generic.UpdateView): default_template_name = 'auth/password_change_form.html' - form_class = PasswordChangeForm + form_class = AdminPasswordChangeForm + admin_form_class = PasswordChangeForm model = get_user_model() success_url = reverse_lazy('admin2:password-change-done') @@ -153,8 +155,10 @@ class PasswordChangeView(Admin2Mixin, LoginRequiredMixin, generic.UpdateView): return data - def get_object(self, **kwargs): - return self.request.user + def get_form_class(self): + if self.request.user == self.get_object(): + return self.admin_form_class + return super(PasswordChangeView, self).get_form_class() class PasswordChangeDoneView(Admin2Mixin, LoginRequiredMixin, generic.TemplateView):