change password form dependent from user

This commit is contained in:
d1ffuz0r 2013-05-31 07:19:38 +07:00
parent 2b172fdcc2
commit b8413f96e3
6 changed files with 15 additions and 10 deletions

View file

@ -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<pk>\d+)/update/password/$',
view=views.PasswordChangeView.as_view(),
name='password-change'
),

View file

@ -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 %}
<li><a href="{% url "admin2:dashboard" %}">Home</a> <span class="divider">/</span></li>
<li class="active">{% trans "Password change" %}</li>
<li class="active">{% trans "Password change" %} <span class="divider">/</span></li>
<li class="active">{{ form.user }}</li>
{% endblock %}
{% block content %}

View file

@ -36,7 +36,7 @@
</a>
<ul class="dropdown-menu">
{% if user.has_usable_password %}
<li><a href="{% url 'admin2:password-change' %}">{% trans "Change password" %}</a></li>
<li><a href="{% url 'admin2:password-change' user.id %}">{% trans "Change password" %}</a></li>
{% endif %}
<li><a href="{% url 'admin2:logout' %}">{% trans "Log out" %}</a></li>
</ul>

View file

@ -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()))

View file

@ -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

View file

@ -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):