From e39af5ea592bbe4e7a643e67f0c379adc10ed392 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 18 Aug 2014 10:36:51 -0400 Subject: [PATCH] Fixed #21648 -- Deprecated is_admin_site option to auth.views.password_reset(). --- django/contrib/auth/tests/test_views.py | 11 +++++++---- django/contrib/auth/views.py | 9 +++++++++ docs/internals/deprecation.txt | 3 +++ docs/releases/1.8.txt | 5 +++++ docs/topics/auth/default.txt | 5 +++++ 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/django/contrib/auth/tests/test_views.py b/django/contrib/auth/tests/test_views.py index dcfda61ca9..710324b2a1 100644 --- a/django/contrib/auth/tests/test_views.py +++ b/django/contrib/auth/tests/test_views.py @@ -2,6 +2,7 @@ from importlib import import_module import itertools import os import re +import warnings from django.apps import apps from django.conf import global_settings, settings @@ -160,10 +161,12 @@ class PasswordResetTest(AuthViewsTestCase): @override_settings(ALLOWED_HOSTS=['adminsite.com']) def test_admin_reset(self): "If the reset view is marked as being for admin, the HTTP_HOST header is used for a domain override." - response = self.client.post('/admin_password_reset/', - {'email': 'staffmember@example.com'}, - HTTP_HOST='adminsite.com' - ) + with warnings.catch_warnings(record=True): + warnings.simplefilter("always") + response = self.client.post('/admin_password_reset/', + {'email': 'staffmember@example.com'}, + HTTP_HOST='adminsite.com' + ) self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertTrue("http://adminsite.com" in mail.outbox[0].body) diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py index 969ab810d8..4d2543a461 100644 --- a/django/contrib/auth/views.py +++ b/django/contrib/auth/views.py @@ -1,7 +1,10 @@ +import warnings + from django.conf import settings from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect, QueryDict from django.template.response import TemplateResponse +from django.utils.deprecation import RemovedInDjango20Warning from django.utils.http import is_safe_url, urlsafe_base64_decode from django.utils.translation import ugettext as _ from django.utils.six.moves.urllib.parse import urlparse, urlunparse @@ -159,6 +162,12 @@ def password_reset(request, is_admin_site=False, 'html_email_template_name': html_email_template_name, } if is_admin_site: + warnings.warn( + "The is_admin_site argument to " + "django.contrib.auth.views.password_reset() is deprecated " + "and will be removed in Django 2.0.", + RemovedInDjango20Warning, 3 + ) opts = dict(opts, domain_override=request.get_host()) form.save(**opts) return HttpResponseRedirect(post_reset_redirect) diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index eca4a5f4f3..10ef6e5850 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -54,6 +54,9 @@ about each item can often be found in the release notes of two versions prior. * The ``remove_tags()`` and ``strip_entities()`` functions in ``django.utils.html`` will be removed. +* The ``is_admin_site`` argument to + ``django.contrib.auth.views.password_reset()`` will be removed. + .. _deprecation-removed-in-1.9: 1.9 diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index e5cecc230c..b720c036ed 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -708,3 +708,8 @@ they are not actually safe. The unused and undocumented ``django.utils.html.strip_entities()`` function has also been deprecated. + +``is_admin_site`` argument to ``django.contrib.auth.views.password_reset()`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It's a legacy option that should no longer be necessary. diff --git a/docs/topics/auth/default.txt b/docs/topics/auth/default.txt index 2b7eeba7ac..149b8d314c 100644 --- a/docs/topics/auth/default.txt +++ b/docs/topics/auth/default.txt @@ -984,6 +984,11 @@ patterns. ``html_email_template_name`` was added. + .. deprecated:: 1.8 + + The ``is_admin_site`` argument is deprecated and will be removed in + Django 2.0. + **Template context:** * ``form``: The form (see ``password_reset_form`` above) for resetting