🧑‍💻(models) improve user str representation

Improve user model str representation to display name or email
if provided. Otherwise, returns sub as last resort.
This commit is contained in:
Marie PUPO JEAMMET
2024-04-05 16:59:01 +02:00
committed by Marie
parent 2598f3649a
commit 66300aca66
3 changed files with 13 additions and 15 deletions

View File

@@ -230,11 +230,7 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
verbose_name_plural = _("users")
def __str__(self):
return (
str(self.profile_contact)
if self.profile_contact
else self.email or str(self.sub)
)
return self.name if self.name else self.email or f"User {self.sub}"
def save(self, *args, **kwargs):
"""

View File

@@ -20,16 +20,13 @@ def test_models_team_accesses_str():
"""
The str representation should include user name, team full name and role.
"""
contact = factories.ContactFactory(full_name="David Bowman")
user = contact.owner
user.profile_contact = contact
user.save()
user = factories.UserFactory()
access = factories.TeamAccessFactory(
role="member",
user=user,
team__name="admins",
)
assert str(access) == "David Bowman is member in team admins"
assert str(access) == f"{user} is {access.role} in team {access.team}"
def test_models_team_accesses_unique():

View File

@@ -14,13 +14,18 @@ pytestmark = pytest.mark.django_db
def test_models_users_str():
"""The str representation should be the full name."""
"""
user str representation should return name or email when avalaible.
Otherwise, it should return the sub.
"""
user = factories.UserFactory()
contact = factories.ContactFactory(full_name="david bowman", owner=user)
user.profile_contact = contact
user.save()
assert str(user) == user.name
assert str(user) == "david bowman"
no_name_user = factories.UserFactory(name=None)
assert str(no_name_user) == no_name_user.email
no_name_no_email_user = factories.UserFactory(name=None, email=None)
assert str(no_name_no_email_user) == f"User {no_name_no_email_user.sub}"
def test_models_users_id_unique():