summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2013-08-28 20:03:21 -0400
committerTim Graham <timograham@gmail.com>2013-08-29 06:36:35 -0400
commitcf8d6e910839238ee9b2d0a094d98cb8d48dc530 (patch)
treec58d063cdb366f2cb641912f04b76a672984177e
parent8d473b2c54035cbcd3aacef0cb83a9769cd05ad3 (diff)
Fixed #20881 -- Removed contrib.auth.models.AbstractUser.get_absolute_url()
The definition is arbitrary and creates a broken "view on site" link in the admin if a project doesn't define such a URL.
-rw-r--r--django/contrib/auth/models.py3
-rw-r--r--docs/releases/1.7.txt7
-rw-r--r--tests/admin_views/tests.py8
3 files changed, 11 insertions, 7 deletions
diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py
index cf1ca8ca1f..309a7a590f 100644
--- a/django/contrib/auth/models.py
+++ b/django/contrib/auth/models.py
@@ -386,9 +386,6 @@ class AbstractUser(AbstractBaseUser, PermissionsMixin):
verbose_name_plural = _('users')
abstract = True
- def get_absolute_url(self):
- return "/users/%s/" % urlquote(self.username)
-
def get_full_name(self):
"""
Returns the first_name plus the last_name, with a space in between.
diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt
index d0c3be1688..67dc263a0f 100644
--- a/docs/releases/1.7.txt
+++ b/docs/releases/1.7.txt
@@ -323,6 +323,13 @@ Miscellaneous
when called on an instance without a primary key value. This is done to
avoid mutable ``__hash__`` values in containers.
+* ``django.contrib.auth.models.AbstractUser`` no longer defines a
+ :meth:`~django.db.models.Model.get_absolute_url()` method. The old definition
+ returned ``"/users/%s/" % urlquote(self.username)`` which was arbitrary
+ since applications may or may not define such a url in ``urlpatterns``.
+ Define a ``get_absolute_url()`` method on your own custom user object or use
+ :setting:`ABSOLUTE_URL_OVERRIDES` if you want a URL for your user.
+
Features deprecated in 1.7
==========================
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py
index 66a5735b6c..2b4ed7b3f5 100644
--- a/tests/admin_views/tests.py
+++ b/tests/admin_views/tests.py
@@ -1749,9 +1749,9 @@ class SecureViewTests(TestCase):
"""
Only admin users should be able to use the admin shortcut view.
"""
- user_ctype = ContentType.objects.get_for_model(User)
- user = User.objects.get(username='super')
- shortcut_url = "/test_admin/admin/r/%s/%s/" % (user_ctype.pk, user.pk)
+ model_ctype = ContentType.objects.get_for_model(ModelWithStringPrimaryKey)
+ obj = ModelWithStringPrimaryKey.objects.create(string_pk='foo')
+ shortcut_url = "/test_admin/admin/r/%s/%s/" % (model_ctype.pk, obj.pk)
# Not logged in: we should see the login page.
response = self.client.get(shortcut_url, follow=False)
@@ -1762,7 +1762,7 @@ class SecureViewTests(TestCase):
response = self.client.get(shortcut_url, follow=False)
# Can't use self.assertRedirects() because User.get_absolute_url() is silly.
self.assertEqual(response.status_code, 302)
- self.assertEqual(response.url, 'http://example.com/users/super/')
+ self.assertEqual(response.url, 'http://example.com/dummy/foo/')
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))