diff --git a/django/contrib/auth/tests/test_views.py b/django/contrib/auth/tests/test_views.py index ba06a6af4d..b939dff058 100644 --- a/django/contrib/auth/tests/test_views.py +++ b/django/contrib/auth/tests/test_views.py @@ -13,7 +13,7 @@ from django.core import mail from django.core.urlresolvers import reverse, NoReverseMatch from django.http import QueryDict, HttpRequest from django.utils.encoding import force_text -from django.utils.http import int_to_base36, urlsafe_base64_decode, urlquote +from django.utils.http import urlquote from django.utils._os import upath from django.test import TestCase from django.test.utils import override_settings, patch_logger @@ -193,16 +193,6 @@ class PasswordResetTest(AuthViewsTestCase): # redirect to a 'complete' page: self.assertContains(response, "Please enter your new password") - def test_confirm_valid_base36(self): - # Remove in Django 1.7 - url, path = self._test_confirm_start() - path_parts = path.strip("/").split("/") - # construct an old style (base36) URL by converting the base64 ID - path_parts[1] = int_to_base36(int(urlsafe_base64_decode(path_parts[1]))) - response = self.client.get("/%s/%s-%s/" % tuple(path_parts)) - # redirect to a 'complete' page: - self.assertContains(response, "Please enter your new password") - def test_confirm_invalid(self): url, path = self._test_confirm_start() # Let's munge the token in the path, but keep the same length, @@ -217,21 +207,11 @@ class PasswordResetTest(AuthViewsTestCase): response = self.client.get('/reset/123456/1-1/') self.assertContains(response, "The password reset link was invalid") - def test_confirm_invalid_user_base36(self): - # Remove in Django 1.7 - response = self.client.get('/reset/123456-1-1/') - self.assertContains(response, "The password reset link was invalid") - def test_confirm_overflow_user(self): # Ensure that we get a 200 response for a base36 user id that overflows int response = self.client.get('/reset/zzzzzzzzzzzzz/1-1/') self.assertContains(response, "The password reset link was invalid") - def test_confirm_overflow_user_base36(self): - # Remove in Django 1.7 - response = self.client.get('/reset/zzzzzzzzzzzzz-1-1/') - self.assertContains(response, "The password reset link was invalid") - def test_confirm_invalid_post(self): # Same as test_confirm_invalid, but trying # to do a POST instead. diff --git a/django/contrib/auth/urls.py b/django/contrib/auth/urls.py index 801d133437..85b8b2869d 100644 --- a/django/contrib/auth/urls.py +++ b/django/contrib/auth/urls.py @@ -12,9 +12,6 @@ urlpatterns = patterns('', url(r'^password_change/done/$', 'django.contrib.auth.views.password_change_done', name='password_change_done'), url(r'^password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'), url(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'), - # Support old style base36 password reset links; remove in Django 1.7 - url(r'^reset/(?P[0-9A-Za-z]{1,13})-(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', - 'django.contrib.auth.views.password_reset_confirm_uidb36'), url(r'^reset/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'django.contrib.auth.views.password_reset_confirm', name='password_reset_confirm'), diff --git a/django/contrib/auth/views.py b/django/contrib/auth/views.py index e9affb33cd..b731a2b3d1 100644 --- a/django/contrib/auth/views.py +++ b/django/contrib/auth/views.py @@ -228,15 +228,6 @@ def password_reset_confirm(request, uidb64=None, token=None, return TemplateResponse(request, template_name, context, current_app=current_app) -def password_reset_confirm_uidb36(request, uidb36=None, **kwargs): - # Support old password reset URLs that used base36 encoded user IDs. - # Remove in Django 1.7 - try: - uidb64 = force_text(urlsafe_base64_encode(force_bytes(base36_to_int(uidb36)))) - except ValueError: - uidb64 = '1' # dummy invalid ID (incorrect padding for base64) - return password_reset_confirm(request, uidb64=uidb64, **kwargs) - def password_reset_complete(request, template_name='registration/password_reset_complete.html', current_app=None, extra_context=None):