Loading django/contrib/auth/models.py +3 −0 Original line number Diff line number Diff line Loading @@ -509,3 +509,6 @@ class AnonymousUser(object): def is_authenticated(self): return False def get_username(self): return self.username django/contrib/auth/tests/test_basic.py +5 −0 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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) Loading docs/ref/contrib/auth.txt +9 −0 Original line number Diff line number Diff line Loading @@ -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``. Loading @@ -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. Loading Loading
django/contrib/auth/models.py +3 −0 Original line number Diff line number Diff line Loading @@ -509,3 +509,6 @@ class AnonymousUser(object): def is_authenticated(self): return False def get_username(self): return self.username
django/contrib/auth/tests/test_basic.py +5 −0 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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) Loading
docs/ref/contrib/auth.txt +9 −0 Original line number Diff line number Diff line Loading @@ -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``. Loading @@ -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. Loading