Kaydet (Commit) e91ff6e2 authored tarafından Christophe Mehay's avatar Christophe Mehay Kaydeden (comit) Tim Graham

[2.0.x] Fixed #29176 -- Fixed AbstractBaseUser.normalize_username() crash if…

[2.0.x] Fixed #29176 -- Fixed AbstractBaseUser.normalize_username() crash if username isn't a string.

Backport of 40bac28f from master
üst 3cdc88ba
......@@ -138,4 +138,4 @@ class AbstractBaseUser(models.Model):
@classmethod
def normalize_username(cls, username):
return unicodedata.normalize('NFKC', username) if username else username
return unicodedata.normalize('NFKC', username) if isinstance(username, str) else username
......@@ -28,3 +28,6 @@ Bugfixes
* Fixed crash when using a ``Window()`` expression in a subquery
(:ticket:`29172`).
* Fixed ``AbstractBaseUser.normalize_username()`` crash if the ``username``
argument isn't a string (:ticket:`29176`).
......@@ -12,6 +12,7 @@ from django.core import mail
from django.db.models.signals import post_save
from django.test import TestCase, override_settings
from .models import IntegerUsernameUser
from .models.with_custom_email_field import CustomEmailField
......@@ -157,6 +158,9 @@ class UserManagerTestCase(TestCase):
class AbstractBaseUserTests(TestCase):
def test_normalize_username(self):
self.assertEqual(IntegerUsernameUser().normalize_username(123), 123)
def test_clean_normalize_username(self):
# The normalization happens in AbstractBaseUser.clean()
ohm_username = 'iamtheΩ' # U+2126 OHM SIGN
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment