diff options
| author | Berker Peksag <berker.peksag@gmail.com> | 2014-11-29 08:19:59 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-11-29 10:31:09 -0500 |
| commit | c8dcded930a1d0ee5688ae2c2eeb8c33d942009f (patch) | |
| tree | 319e9868f808bca0cef788330a33225f42a3c9b7 | |
| parent | 3131e9cef5f0a96f4fe667b0b1626c238153d1f1 (diff) | |
Fixed #17890 -- Added an extra_context parameter to AdminSite.password_change().
| -rw-r--r-- | django/contrib/admin/sites.py | 4 | ||||
| -rw-r--r-- | docs/releases/1.8.txt | 3 | ||||
| -rw-r--r-- | tests/admin_views/customadmin.py | 3 | ||||
| -rw-r--r-- | tests/admin_views/tests.py | 6 | ||||
| -rw-r--r-- | tests/templates/custom_admin/password_change_form.html | 1 |
5 files changed, 15 insertions, 2 deletions
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py index e310635eea..3a69afda4a 100644 --- a/django/contrib/admin/sites.py +++ b/django/contrib/admin/sites.py @@ -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 diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index 2a1ec35873..28b0770aa9 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -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` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/admin_views/customadmin.py b/tests/admin_views/customadmin.py index 906fb871db..3276a3091d 100644 --- a/tests/admin_views/customadmin.py +++ b/tests/admin_views/customadmin.py @@ -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 diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index f55bcacd78..6313fdfd08 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -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) diff --git a/tests/templates/custom_admin/password_change_form.html b/tests/templates/custom_admin/password_change_form.html index 1c424934e4..12d911002e 100644 --- a/tests/templates/custom_admin/password_change_form.html +++ b/tests/templates/custom_admin/password_change_form.html @@ -1,6 +1,7 @@ {% extends "registration/password_change_form.html" %} {% block content %} +{{ spam }} Hello from a custom password change form template {{ block.super }} {% endblock %} |
