custom_user: use any identifier for full name fallback display (#80473) #119
|
@ -366,7 +366,7 @@ class User(AbstractBaseUser):
|
|||
Returns the first_name plus the last_name, with a space in between.
|
||||
"""
|
||||
full_name = '%s %s' % (self.first_name, self.last_name)
|
||||
return full_name.strip() or self.username or self.email
|
||||
return full_name.strip() or self.username or self.email or self.phone_identifier or ''
|
||||
|
||||
def get_short_name(self):
|
||||
'Returns the short name for the user.'
|
||||
|
|
|
@ -70,6 +70,39 @@ def test_user_delete(db):
|
|||
assert deleted_user.old_email == 'foo@example.net'
|
||||
|
||||
|
||||
def test_user_full_name_identifiers_fallback(db, phone_activated_authn):
|
||||
user = User.objects.create(
|
||||
username='foo',
|
||||
email='foo@example.net',
|
||||
first_name='Foo',
|
||||
last_name='Bar',
|
||||
)
|
||||
user.attributes.phone = '+33611223344'
|
||||
user.save()
|
||||
|
||||
assert user.get_full_name() == 'Foo Bar'
|
||||
|
||||
# no last name, only first name is displayed
|
||||
user.last_name = ''
|
||||
user.save()
|
||||
assert user.get_full_name() == 'Foo'
|
||||
|
||||
# if first and last names are absent, fallback on username
|
||||
user.first_name = ''
|
||||
user.save()
|
||||
assert user.get_full_name() == 'foo'
|
||||
|
||||
# if username is absent, fallback on email
|
||||
user.username = ''
|
||||
user.save()
|
||||
assert user.get_full_name() == 'foo@example.net'
|
||||
|
||||
# if email is absent, fallback on phone identifier
|
||||
user.email = ''
|
||||
user.save()
|
||||
assert user.get_full_name() == '+33611223344'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fts(db):
|
||||
Attribute.objects.create(name='adresse', label='adresse', searchable=True, kind='string')
|
||||
|
|
Loading…
Reference in New Issue