Fixed #17890 -- Added an extra_context parameter to AdminSite.password_change().
This commit is contained in:
parent
3131e9cef5
commit
c8dcded930
|
@ -281,7 +281,7 @@ class AdminSite(object):
|
|||
'site_url': self.site_url,
|
||||
}
|
||||
|
||||
def password_change(self, request):
|
||||
def password_change(self, request, extra_context=None):
|
||||
"""
|
||||
Handles the "change password" task -- both form display and validation.
|
||||
"""
|
||||
|
@ -292,7 +292,7 @@ class AdminSite(object):
|
|||
'current_app': self.name,
|
||||
'password_change_form': AdminPasswordChangeForm,
|
||||
'post_change_redirect': url,
|
||||
'extra_context': self.each_context(),
|
||||
'extra_context': dict(self.each_context(), **(extra_context or {})),
|
||||
}
|
||||
if self.password_change_template is not None:
|
||||
defaults['template_name'] = self.password_change_template
|
||||
|
|
|
@ -100,6 +100,9 @@ Minor features
|
|||
<django.contrib.admin.ModelAdmin.show_full_result_count>` to control whether
|
||||
or not the full count of objects should be displayed on a filtered admin page.
|
||||
|
||||
* The ``AdminSite.password_change()`` method now has an ``extra_context``
|
||||
parameter.
|
||||
|
||||
:mod:`django.contrib.admindocs`
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
|
|
@ -33,6 +33,9 @@ class Admin2(admin.AdminSite):
|
|||
def my_view(self, request):
|
||||
return HttpResponse("Django is a magical pony!")
|
||||
|
||||
def password_change(self, request, extra_context=None):
|
||||
return super(Admin2, self).password_change(request, {'spam': 'eggs'})
|
||||
|
||||
|
||||
class UserLimitedAdmin(UserAdmin):
|
||||
# used for testing password change on a user not in queryset
|
||||
|
|
|
@ -1012,6 +1012,12 @@ class CustomModelAdminTest(AdminViewBasicTestCase):
|
|||
self.assertTemplateUsed(response, 'custom_admin/password_change_form.html')
|
||||
self.assertContains(response, 'Hello from a custom password change form template')
|
||||
|
||||
def test_custom_admin_site_password_change_with_extra_context(self):
|
||||
response = self.client.get('/test_admin/admin2/password_change/')
|
||||
self.assertIsInstance(response, TemplateResponse)
|
||||
self.assertTemplateUsed(response, 'custom_admin/password_change_form.html')
|
||||
self.assertContains(response, 'eggs')
|
||||
|
||||
def test_custom_admin_site_password_change_done_template(self):
|
||||
response = self.client.get('/test_admin/admin2/password_change/done/')
|
||||
self.assertIsInstance(response, TemplateResponse)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{% extends "registration/password_change_form.html" %}
|
||||
|
||||
{% block content %}
|
||||
{{ spam }}
|
||||
Hello from a custom password change form template
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue