custom_user: use any identifier for full name fallback display (#80473) #119

Merged
pmarillonnet merged 1 commits from wip/80473-user-full-name-identifiers-fallback into main 2023-09-18 10:42:39 +02:00
2 changed files with 34 additions and 1 deletions

View File

@ -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.'

View File

@ -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')