فهرست منبع

Fixed #23488 -- Added AnonymousUser.get_username().

Damien Baty 10 سال پیش
والد
کامیت
ad491ecc6e
3فایلهای تغییر یافته به همراه17 افزوده شده و 0 حذف شده
  1. 3 0
      django/contrib/auth/models.py
  2. 5 0
      django/contrib/auth/tests/test_basic.py
  3. 9 0
      docs/ref/contrib/auth.txt

+ 3 - 0
django/contrib/auth/models.py

@@ -509,3 +509,6 @@ class AnonymousUser(object):
 
     def is_authenticated(self):
         return False
+
+    def get_username(self):
+        return self.username

+ 5 - 0
django/contrib/auth/tests/test_basic.py

@@ -41,6 +41,9 @@ class BasicTestCase(TestCase):
         u.set_password(None)
         self.assertFalse(u.has_usable_password())
 
+        # Check username getter
+        self.assertEqual(u.get_username(), 'testuser')
+
         # Check authentication/permissions
         self.assertTrue(u.is_authenticated())
         self.assertFalse(u.is_staff)
@@ -66,6 +69,8 @@ class BasicTestCase(TestCase):
         "Check the properties of the anonymous user"
         a = AnonymousUser()
         self.assertEqual(a.pk, None)
+        self.assertEqual(a.username, '')
+        self.assertEqual(a.get_username(), '')
         self.assertFalse(a.is_authenticated())
         self.assertFalse(a.is_staff)
         self.assertFalse(a.is_active)

+ 9 - 0
docs/ref/contrib/auth.txt

@@ -269,6 +269,10 @@ Anonymous users
     these differences:
 
     * :ref:`id <automatic-primary-key-fields>` is always ``None``.
+    * :attr:`~django.contrib.auth.models.User.username` is always the empty
+      string.
+    * :meth:`~django.contrib.auth.models.User.get_username()` always returns
+      the empty string.
     * :attr:`~django.contrib.auth.models.User.is_staff` and
       :attr:`~django.contrib.auth.models.User.is_superuser` are always
       ``False``.
@@ -285,6 +289,11 @@ Anonymous users
       :meth:`~django.db.models.Model.save` and
       :meth:`~django.db.models.Model.delete()` raise :exc:`NotImplementedError`.
 
+    .. versionadded:: 1.8
+
+      ``AnonymousUser.get_username()`` has been added to
+      better mirror :class:`django.contrib.auth.models.User`.
+
 In practice, you probably won't need to use
 :class:`~django.contrib.auth.models.AnonymousUser` objects on your own, but
 they're used by Web requests, as explained in the next section.