🧑‍💻(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") verbose_name_plural = _("users")
def __str__(self): def __str__(self):
return ( return self.name if self.name else self.email or f"User {self.sub}"
str(self.profile_contact)
if self.profile_contact
else self.email or str(self.sub)
)
def save(self, *args, **kwargs): 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. The str representation should include user name, team full name and role.
""" """
contact = factories.ContactFactory(full_name="David Bowman") user = factories.UserFactory()
user = contact.owner
user.profile_contact = contact
user.save()
access = factories.TeamAccessFactory( access = factories.TeamAccessFactory(
role="member", role="member",
user=user, user=user,
team__name="admins", 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(): def test_models_team_accesses_unique():

View File

@@ -14,13 +14,18 @@ pytestmark = pytest.mark.django_db
def test_models_users_str(): 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() user = factories.UserFactory()
contact = factories.ContactFactory(full_name="david bowman", owner=user) assert str(user) == user.name
user.profile_contact = contact
user.save()
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(): def test_models_users_id_unique():